2016-06-25 3 views
0

이 특정 연습은 배열을 통해 검색하고 문자열이 발견되면 배열의 다음 항목으로 건너 뛰는 사용자에게 묻는 codewats Kata입니다. 그런 다음 배열은 포함 된 문자열없이 인쇄되어야합니다. [1, 2, "a", "b"]은 검색중인 배열입니다. 나는 [1, 2]을 기대한다.배열에서 문자열 찾기 및 다음 사용

내가 시도 :

1 
이 이

내 코드 만 반환

def filter_list(l) 
    print l 
    l.each do |item| next if item.class == String 
    return item 
    end 
    print l 
end 

두 가지 방법이 동일한 결과를 반환 :

def filter_list(l) 
    print l 
    i = 0 
    while i < l.length 
    l.each do|item| next if item.class == String 
    return item 
    i += 1 
    end 
end 

는 또한 while 루프없이이 코드를 시도 배열의 최초의 요소

모든 안내를 받으실 수 있습니다.

+0

을 다시 한 번 : 당신이 배열에서 모든 문자열을 필터링 할? – mudasobwa

+0

예. 그리고 배열 만 정수로 반환하십시오. – John

답변

2

배열에서 모든 문자열을 제거하려는 경우 #reject를 사용할 수 있습니다. 그냥 호기심

array = [1,2,"a","b"] 
=> [1, 2, "a", "b"] 
array.reject { |element| element.is_a? String } 
=> [1, 2] 
2
[1, 2, "a", "b"].grep(Integer) # => [1, 2] 
[1, 2, "a", "b"].grep_v(String) # => [1, 2] 
0

:

arr = [1, 2, 2, "a", "b"] 
(arr.map(&:to_s) - arr).map(&:to_i) 
#⇒ [ 1, 2, 2 ] 

zeroes = arr.count(0) 
arr.map(&:to_i) - [0] + [0] * zeroes 
관련 문제