我有一个这样的数组:
vals = [1,2,10,5,10,5,9,10]
我需要数组中最大元素的索引(在上面的示例中 10
)。所以在我的例子中,它应该吐出另一个数组:
[2, 4, 7]
但是,当我对 block 使用 #find_index
时,我只能得到它匹配的第一个索引:
[12] pry(main)> vals.find_index { |i| i == vals.max }
=> 2
我可以通过这样做得到我想要的,但它看起来有点冗长:
[14] pry(main)> results = []
=> []
[15] pry(main)> vals.each_with_index do |elem, i|
[15] pry(main)* results << i if elem == vals.max
[15] pry(main)* end
=> [1, 2, 10, 5, 10, 5, 9, 10]
[16] pry(main)> results
=> [2, 4, 7]
有没有人有任何更像 ruby 的方法来做到这一点?
最佳答案
试试这个:
vals = [1, 2, 10, 5, 10, 5, 9, 10]
max_val = vals.max
vals.each_index.select{|i| vals[i] == max_val}
注意:答案来自 Find indices of elements that match a given condition
关于ruby - 查找数组中最大元素的所有索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27064725/