假设我有一个哈希:
{
first: :value1,
second: :value1,
third: :value2
}
在
.map
期间,我需要消除重复项,因此它应该只是first
或second
。是否可以有一些解决方法,例如:
{
(:first || :second) => :value1,
third: :value2
}
如果不是,如何根据条件删除哈希中的重复键?是否可以将条件传递到
.uniq
块中?
谢谢,
是的,可以将块传递给
#uniq
方法。
https://ruby-doc.org/3.2.2/Enumerable.html#method-i-uniq
您可以应用以下内容:
hash.uniq { |_k, v| v }
或更短:
hash.uniq(&:last)
此外,如果您不需要键,另一个正确的解决方案是简单地获取值:
hash.values.uniq
您的第二个建议是有效的 Ruby 代码,但不正确,因为它删除了一个键并评估为以下内容:
irb(main):004:0> {
(:first || :second) => :value1,
third: :value2
}
=> {:first=>:value1, :third=>:value2}