我有一个这样的数组
arr = [ { name: "Josh", grade: 90 }, {name: "Josh", grade: 70 },
{ name: "Kevin", grade: 100 }, { name: "Kevin", grade: 95 },
{ name: "Ben", grade: 90 }, { name: "Rod", grade: 90 },
{ name: "Rod", grade: 70 }, { name: "Jack", grade: 60 } ]
我希望删除 Ben 和 Jack,因为他们在此数组中只有一条记录。完成这项工作最优雅的方法是什么?我可以手动检查它,但是有更好的方法吗?就像对面的
arr.uniq! { |person| person[:name] }
最佳答案
arr.reject! { |x| arr.count { |y| y[:name] == x[:name] } == 1 }
O(n)
解决方案:
count_hash = {}
arr.each { |x| count_hash[x[:name]] ||= 0; count_hash[x[:name]] += 1 }
arr.reject! { |x| count_hash[x[:name]] == 1 }
关于ruby - 如何将一组相似的哈希值限制为具有多个相同键 :value pair (details inside) 的哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23879428/