удалить элементы массива по определенным критериям - PullRequest
8 голосов
/ 02 февраля 2011

Что лучше и как это сделать: У меня есть два массива:

a=[['a','one'],['b','two'],['c','three'],['d','four']]

и b=['two','three']

Я хочу удалить вложенные массивы внутри a, которые включают элементы в b, чтобы получить:

[['a','one']['d','four']

Спасибо.

Ответы [ 3 ]

17 голосов
/ 02 февраля 2011
a = [['a','one'],['b','two'],['c','three'],['d','four']]
b = ['two','three']

a.delete_if { |x| b.include?(x.last) }

p a
# => [["a", "one"], ["d", "four"]]
5 голосов
/ 02 февраля 2011

Рассок на помощь!

 b.each {|el| a.delete(a.rassoc(el)) }
2 голосов
/ 02 февраля 2011
a=[['a','one'],['b','two'],['c','three'],['d','four']]
b=['two','three']    
result=a.reject { |e| b.include?(e.first) or b.include?(e.last) }
# result => [["a", "one"], ["d", "four"]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...