Ruby: How to find all indices of elements that match a given condition?

来源:互联网 发布:快手喊麦都用什么软件 编辑:程序博客网 时间:2024/05/15 23:46

Given an array, how would you find all indices of elements those match a given condition?

For example, say we have:

arr = ['x', 'o', 'x', '.', '.', 'o', 'x']

To find all indices where the item is x, I could do:

arr.each_with_index.map { |a, i| a == 'x' ? i : nil }.compact   # => [0, 2, 6]

or

(0..arr.size-1).select { |i| arr[i] == 'x' }   # => [0, 2, 6]

Is there a nicer way to achieve this?


Ruby 1.9:

arr = ['x', 'o', 'x', '.', '.', 'o', 'x']p arr.each_index.select{|i| arr[i] == 'x'} # =>[0, 2, 6]
find Index of first Matching Element

a=[100,200,300]a.index{ |x| x%3==0 }

0 0
原创粉丝点击