2016-06-25 8 views
0

この具体的な演習では、配列を検索し、文字列が見つかった場合は配列内の次の項目にスキップするようにユーザーに指示するコードワットKataです。その後、配列は文字列を含まずに出力されます。 [1, 2, "a", "b"]は検索対象の配列です。私は[1, 2]を期待しています。配列内の文字列の検索と次の使用

Iが試み:

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ループせずにこのコードを試してみました:

1 

マイコードのみを返す:

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

は、どちらの方法でも同じ結果を返します配列の最初の要素。

ガイダンスをいただければ幸いです。

+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 
関連する問題