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

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 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章