繁体   English   中英

查找数组ruby中的元素索引

[英]Finding indices of element in array ruby

如何在ruby中找到具有特定值的数组中所有元素的索引?
即如果你有一个数组[2,3,52,2,4,1,2],有没有比使用循环更简单的方法来获取数组中所有2的索引? 所以答案就像[0,3,6],如果我正在寻找2。
如果我只想找到给定元素的一个实例,那么获取数组元素的索引比O(n)更快的答案给出了解决方案。

也许你可以用这个:

a = [2, 3, 52, 2, 4, 1, 2]

b = a.map.with_index{|k, i| i if k == 2}.compact
b
# => [0,3,6]

或者,如果您想修改变量,请修改版本。

a = [2, 3, 52, 2, 4, 1, 2]
a.map!.with_index{|k, i| i if k == 2}.compact!
a
# => [0,3,6]

试试这个,

arr = [2,3,52,2,4,1,2]
    output = []
    arr.each_with_index do |v,i|
       if v == 2
         output << i
       end
    end

puts output #=> [0, 3, 6]
a
# => [2, 3, 52, 2, 4, 1, 2]
b = []
# => []
a.each_with_index{|i, ind| b << ind if i == 2}
# => [2, 3, 52, 2, 4, 1, 2] 
a.each_with_object([]).find_all {|i, index| i == 2}.map {|i, index| index }

我觉得还有一条捷径。

另一种选择可能是:

a.each_with_object([]).with_index {|(i, result), index| result << index if i == 2 }
a = [2,3,52,2,4,1,2]

a.each_index.select { |i| a[i]== 2 }
  #=> [0, 3, 6] 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM