Reputation: 512
I have array of arrays, which looks like this:
a = [['1','1500','SomeName','SomeSurname'],
['2','1500','SomeName2','SomeSurname2'],
['3','1500','SomeName3','SomeSurname3'],
['4','1501','SomeName','SomeSurname'],
...]
I can get sub-array of this array with all rows containing '1500' value by .each
function and simple if
, but if a.length
is large, it's taking too much time! How can I get all rows from a
with certain a[1]
value, without iterating over a
?
Upvotes: 6
Views: 5020
Reputation: 52377
Enumerable#find_all
is what you are looking for:
a.find_all { |el| el[1] == '1500' } # a.select will do the same
Upvotes: 10
Reputation: 1604
You have a few options, you could use a find:
a.find { |l| l[1] == '5' }
This would find the array that matches the first 5
You need to use find_all to find all:
a.find_all { |l| l[1] == '5' }
Upvotes: 7
Reputation: 14881
Use select
to get all matching elements:
a.select { |e| e[1] == '1500' }
Upvotes: 1