[英]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.