3番目以降のすべてのインデックスの値に対応します。私は現在、このようにそれをやっている:配列インデックス
newArray = []
array[2..-1].each do |item|
newArray << hash[item]
end
これは(おそらく私が直接、別のオブジェクトの初期化コードにこれを入れたいとnewArray
事前に作成せずに)1行で行うことができるように私は感じます。これは可能ですか?
3番目以降のすべてのインデックスの値に対応します。私は現在、このようにそれをやっている:配列インデックス
newArray = []
array[2..-1].each do |item|
newArray << hash[item]
end
これは(おそらく私が直接、別のオブジェクトの初期化コードにこれを入れたいとnewArray
事前に作成せずに)1行で行うことができるように私は感じます。これは可能ですか?
は、あなたはそれを1行をしたい場合は、単に改行を削除し、Hash#values_at
hash.values_at *array[2..-1]
# => [3, 4, 5, 6]
hash.keep_if {|k,v| array.slice(2, array.length-2).index(k) }.values
または
hash.dup.keep_if {|k,v| array.slice(2, array.length-2).index(k) }.values
あなたは、元のハッシュ値この程度
方法を維持する必要がある場合は?
array[2..-1].map{|x| hash[x]}
期待した出力例を投稿できますか?
array[2..-1].inject([]) {|ary, x| ary << hash[x]}
を使用します。 Rubyでは、セミコロン、キーワード、または場合によっては何も置き換えずに、すべてのプログラムのすべての改行をいつでも削除することができます。あなたの場合: 'newArray = [];配列[2 ..- 1] .each do | item | newArray << hash [item] end':行:1行。 –