my_array = [0, 1, 2, nil, nil, 3, nil, 4, nil]
@Theスズ男を経由して[0,1,2,5,7]
Ruby:1.8.7:配列内の要素がnilでないインデックスを見つけるにはどうすればよいですか? | E、I state.map.with_indexを{|:
を返す必要があります(e.nil?)?ゼロ:I}だけ私は迅速な方法があります確信しているが、1.9
my_array = [0, 1, 2, nil, nil, 3, nil, 4, nil]
@Theスズ男を経由して[0,1,2,5,7]
Ruby:1.8.7:配列内の要素がnilでないインデックスを見つけるにはどうすればよいですか? | E、I state.map.with_indexを{|:
を返す必要があります(e.nil?)?ゼロ:I}だけ私は迅速な方法があります確信しているが、1.9
これは、v1.9.2であり得る:
my_array.map.with_index{ |e,i| (e.nil?) ? i : nil }.compact
=> [3, 4, 6, 8]
私が答えている間に質問が変わったので、これは今のままの質問にマッチします:
my_array.map.with_index{ |e,i| (e.nil?) ? nil : i }.compact
=> [0, 1, 2, 5, 7]
これは、3値演算子の値を切り替えた場合に過ぎません。
さらに、質問が変更されました。 1.8.7と1.9.2で:
ruby-1.8.7-p330 :004 > my_array.each_with_index.map{|e,i| (e.nil?) ? nil : i }.compact
=> [0, 1, 2, 5, 7]
ruby-1.9.2-p136 :002 > my_array.each_with_index.map{|e,i| (e.nil?) ? nil : i }.compact
=> [0, 1, 2, 5, 7]
これは私が@dmarkowから学んだものよりも短いです。state.each_with_index {| item、index |残りの_moves << item.nil以外のインデックス? } – NullVoxPopuli
ruby 1.8.7でこれを行うにはどうすればよいですか? – NullVoxPopuli
@Dernalia、追加された2つの例を参照 –
で動作することを、残念ながら
を.compact:
result = []
my_array.each_with_index do |item, index|
result << index unless item.nil?
end
私は、彼らが '何あなたのサンプルショーと一致していません – RichardTheKiwi
あなたの質問のタイトルはnil are'場所を意味だと思います。あなたは「どのようにゼロ要素のインデックスを見つけるのですか? –
笑、ありがとう、私は混乱してしまった。一定。 – NullVoxPopuli