В массиве ha sh как удалить элемент с определенным значением для ключа в ruby? - PullRequest
1 голос
/ 25 февраля 2020

В массиве га sh как удалить элемент с определенным значением для ключа?

Например:

array = [ {"lang"=> 'Ruby', "is_using"=> "Yes"}, { "lang"=> "Go", "is_using" => "No"}, {"lang"=> "Rust", "is_using"=> "No"} ]

Мне нужно написать минимальный и эффективный ruby скрипт, который удаляет все элементы из массива, для которого в качестве значения ключа «is_using» указано «Нет».

Ответы [ 2 ]

4 голосов
/ 25 февраля 2020

Использование Array#delete_if:

array = [ {"lang"=> 'Ruby', "is_using"=> "Yes"}, { "lang"=> "Go", "is_using" => "No"}, {"lang"=> "Rust", "is_using"=> "No"} ]
array.delete_if { |hash| hash['is_using'] == 'No' }
#=> [{ "lang" => "Ruby", "is_using" => "Yes" }]
2 голосов
/ 25 февраля 2020

Если вы не хотите изменять исходный массив, вы можете использовать reject:

array = [{ "lang"=> 'Ruby', "is_using"=> "Yes" },
         { "lang"=> "Go", "is_using" => "No" },
         { "lang"=> "Rust", "is_using"=> "No" }]

array.reject { |h| h["is_using"].eql?('Yes') }
# [{"lang"=>"Go", "is_using"=>"No"}, {"lang"=>"Rust", "is_using"=>"No"}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...