ruby - 查找数组中最大元素的所有索引

标签 ruby arrays

我有一个这样的数组:

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/

相关文章:

c - 带有结构体数组的 Malloc

javascript - 基于两个数组创建一个数组

javascript - 改变JS数组的结构

ruby - 与 ruby​​ 实时通信

ruby - psql : could not connect to server error on "travis-ci"

java - 如果调用matrix2.getElement(int y, int x),我应该在 getElement 方法中输入什么

arrays - 如何在 Perl 中序列化数组引用数组?

ruby - ruby 哈希中的条件键/值

ruby-on-rails - Rails 还是 Grails?

ruby - 是否有与 Perl 的 Data::Rmap 等效的 Ruby?