Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 检查散列中的重复项,并返回已清理的散列和出现次数_Ruby On Rails_Ruby_Enumeration - Fatal编程技术网

Ruby on rails 检查散列中的重复项,并返回已清理的散列和出现次数

Ruby on rails 检查散列中的重复项,并返回已清理的散列和出现次数,ruby-on-rails,ruby,enumeration,Ruby On Rails,Ruby,Enumeration,我仍然是ruby/rails的初学者,有点困在这里 以下是我所拥有的: 我有一个哈希数组,每个哈希包含多个键,例如:firstname、lastname、昵称、生日 在进一步处理之前,我想得到所有重复的哈希值。我知道这可以通过合并来完成。有一件棘手的事情:我对“重复”有一个特殊的标准。我想检查每个散列,如果firstname、lastname和昵称这三个键相同,那么只有计数是重复的。如果是这种情况,我希望从数组中删除所有重复项,并在保存发生次数的最后一个条目中附加一个新的键“count” 我觉得

我仍然是ruby/rails的初学者,有点困在这里

以下是我所拥有的: 我有一个哈希数组,每个哈希包含多个键,例如:firstname、lastname、昵称、生日

在进一步处理之前,我想得到所有重复的哈希值。我知道这可以通过合并来完成。有一件棘手的事情:我对“重复”有一个特殊的标准。我想检查每个散列,如果firstname、lastname和昵称这三个键相同,那么只有计数是重复的。如果是这种情况,我希望从数组中删除所有重复项,并在保存发生次数的最后一个条目中附加一个新的键“count”

我觉得枚举将引导我走向成功,但我不知道如何以优雅的“rails”方式处理这个问题

非常感谢你的帮助

亲切问候,,
Madhipie.

uniq
在ruby的更高版本中需要一个块,但由于您还需要计数,我将开始通过方法查看
组:

result = hash.group_by{|x| x.values_at(:firstname, :lastname, :nickname)}
然后,只需抓取一个散列并添加值的数量:

result.map{|_,values| values.first.merge {size: values.lenth}}
你让我很开心。:)非常感谢你!