当满足条件时,我想将哈希表(hash)键的值提取到数组中。例如,对于哈希表h,我想提取值为“true”的键:
h = { :a => true, :b => false, :c =>true }
我想到了这个方案:
h.map {|k,v| k if v==true} - [nil]
有其他替代品吗?
h.select { |_, v| v }.keys
会做同样的事情,但以更易读的方式呈现。
true
(在 Ruby 中,与 Scheme 一样,在条件中除了 nil
和 false
之外的任何东西都是 true,但 1 != true
)。 - Hauleth你也可以这样做
s = {}
h.each do |k,v|
s[k] = v if v==true
end
map
和collect
是别名,而不是select
。select
的工作不同,在哈希的情况下返回不同类型:它返回哈希,而map
/collect
返回数组。 - NIA