Ruby: Как отфильтровать в хэш-структуре, чтобы получить все ключи <> "1"? - PullRequest
4 голосов
/ 03 ноября 2010

Я хочу найти какой-нибудь элегантный способ добиться этого. Может быть, как следующий:

hash={"1"=>"1","2"=>"2"}
r=[]
hash.each do |k,v|
    if k!="1"
       r<<k
    end
end
puts r

Есть ли лучший способ добиться этого?

Ответы [ 4 ]

12 голосов
/ 03 ноября 2010

Вы можете использовать «разность массивов»:

hash.keys - ['1']
#=> ["2"]
3 голосов
/ 03 ноября 2010
puts r = hash.keys.select { |i| i != "1" }
1 голос
/ 03 ноября 2010

Вот один из способов:

r = hash.select { |k,v,| k != "1" }
puts r

Надеюсь, это поможет,
Бен

0 голосов
/ 03 ноября 2010
hash.reject{|k,v| k == "1"}

Мне нравится отклонять выбор с отрицательным тестом, потому что он более читабелен.«Отклонить значения, где X ==« 1 »истинно« против »собирать значения, где x! =« 1 »верно».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...