web-dev-qa-db-ja.com

ハッシュ各ループでインデックスにアクセスできますか?

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

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)?
}
116
Upgradingdave

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

hash.each_with_index { |(key,value),index| ... }
284
YOU

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

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
11
Kaleb Brasee