Массив массивов, удалить индекс на основе содержимого массива в индексе? - PullRequest
5 голосов
/ 05 февраля 2011

Я изо всех сил пытался научиться обращаться с массивами, состоящими из массивов.

Скажем, у меня был этот массив:

my_array = [['ORANGE',1],['APPLE',2],['PEACH',3]

Как мне найти индекс my_array, который содержит 'apple', и удалить этот индекс (удаляя подмассив ['APPLE', 2], потому что 'apple' был объединен в массив с этим индексом)? *

Спасибо - я очень ценю помощь отсюда.

Ответы [ 3 ]

7 голосов
/ 05 февраля 2011

Вы можете использовать Array.select, чтобы отфильтровать элементы:

>> a = [['ORANGE',1],['APPLE',2],['PEACH',3]]
=> [["ORANGE", 1], ["APPLE", 2], ["PEACH", 3]]

>> a.select{ |a, b| a != "APPLE" }
=> [["ORANGE", 1], ["PEACH", 3]]

select вернет те элементы из, для которых данный блок (здесь a != "APPLE") возвращает true.

6 голосов
/ 05 февраля 2011
my_array.reject { |x| x[0] == 'APPLE' }
4 голосов
/ 05 февраля 2011

Я проверял это, это работает:

my_array.delete_if { |x| x[0] == 'APPLE' }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...