129

おそらく明らかな何かが欠けていますが、ハッシュごとのループ内の反復のインデックス/カウントにアクセスする方法はありますか?

hash = {'three' => 'one', 'four' => 'two', 'one' => 'three'}
hash.each { |key, value| 
    # any way to know which iteration this is
    #   (without having to create a count variable)?
}
4

2 に答える 2

321

各反復のインデックスを知りたい場合は、使用できます.each_with_index

hash.each_with_index { |(key,value),index| ... }
于 2010-01-18T02:38:49.927 に答える
14

キーを反復処理して、値を手動で取得できます。

hash.keys.each_with_index do |key, index|
   value = hash[key]
   print "key: #{key}, value: #{value}, index: #{index}\n"
   # use key, value and index as desired
end

編集:ランピオンのコメントごとに、反復するとキーと値の両方をタプルとして取得できることも学びましたhash

hash.each_with_index do |(key, value), index|
   print "key: #{key}, value: #{value}, index: #{index}\n"
   # use key, value and index as desired
end
于 2010-01-18T02:38:16.623 に答える