ruby - 如何将一组相似的哈希值限制为具有多个相同键 :value pair (details inside) 的哈希值

标签 ruby arrays hash

我有一个这样的数组

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/

相关文章:

ruby-on-rails - Rails 版本停留在 2.3.5 如何更新到 3.x

ruby-on-rails - Ruby on Rails - 哈希数组 - 基于键显示值

javascript - array.include 是否适用于嵌套对象

java - 查找 100 个随机元素的数组是否包含不重复的数字?

c++ - CryptHashData 返回 ERROR_INVALID_PARAMETER (CAPI)

MySQL select by password() 未返回预期结果

c++ - uuid_t 的现有哈希函数

java - 为多个应用程序修复 Windows 7 环境变量中的 'PATH'

Ruby 模块给定参数调用一个方法?

java - 数组创建堆栈溢出