Find indices of elements that match a given condition
arrays, ruby
Solution
Ruby 1.9:
arr = ['x', 'o', 'x', '.', '.', 'o', 'x']
p arr.each_index.select{|i| arr[i] == 'x'} # =>[0, 2, 6]
Code
Problem
Given an array, how can I find all indices of elements those match a given condition? For example, if I 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?