Ruby 如何获取散列中键的索引?

Ruby 如何获取散列中键的索引?,ruby,Ruby,我正在尝试获取散列中某个键的索引 我知道如何在阵列中执行此操作: arr = ['Done', 13, 0.4, true] a = arr.index('Done') puts a 有没有一种方法或某种方式可以用散列中的一个键来执行类似的操作?谢谢 至少有两种方法可以获取此信息,我想到的两种方法是Enumerable将每个元素传递到块并检查密钥的方法: hash.find_index { |key, _| key == 'Done' } 或者,您可以将散列中的所有数据作为一个数组获取,

我正在尝试获取散列中某个键的索引

我知道如何在阵列中执行此操作:

arr = ['Done', 13, 0.4, true]

a = arr.index('Done')

puts a

有没有一种方法或某种方式可以用散列中的一个键来执行类似的操作?谢谢

至少有两种方法可以获取此信息,我想到的两种方法是Enumerable将每个元素传递到块并检查密钥的方法:

hash.find_index { |key, _| key == 'Done' }
或者,您可以将散列中的所有数据作为一个数组获取,然后像以前一样查找索引:

hash.keys.index('Done')

散列通常不被视为有序结构,它们只是有一个键列表和对应于这些键的值

的确,在Ruby中,哈希在技术上是有序的,但是很少有实际的用例将其作为一种有序的方式来处理

如果您想在散列中查找与值对应的键,只需使用以下方法:


我想您可以使用hash.keys.indexhash.key1来获取0,因为它是第一个值,但我不建议您这样做,因为它不是数据结构的典型用法

您可以提供一个包含哈希和预期结果的示例吗?顺便问一句,您的用例是什么?你为什么对键的索引感兴趣?我想不出它有什么实际用途:-@Stephan我正在编写一个开源的pentesting工具,需要以有序的方式排列数据。
hash = { a: 1, b: 2 }
hash.key(1) # => :a