ruby - 如何根据Ruby中的条件从哈希数组中删除哈希
问题描述
我有一个哈希数组:
a = [{'id'=> '1', 'subject'=> 'this is subject 1', 'orig_id'=> 123, 'parent_id'=> 123},
{'id'=> '2', 'subject'=> 'this is subject 2', 'orig_id'=> 456, 'parent_id'=> 123},
{'id'=> '3', 'subject'=> 'this is subject 3', 'orig_id'=> 789, 'parent_id'=> 980}]
我想根据条件过滤它,如果parent_id
一个对象的 等于另一个对象的orig_id
或 ,parent_id
则保留第一个哈希并删除另一个。
从上述场景中,第二个哈希将被删除,输出将是:
a = [{'id'=> '1', 'subject'=> 'this is subject 1', 'orig_id'=> 123, 'parent_id'=> 123},
{'id'=> '3', 'subject'=> 'this is subject 3', 'orig_id'=> 789, 'parent_id'=> 980}]
解决方案
分组parent_id
并检测正确的,否则返回所有分组的哈希值。
a.
group_by { |h| h["parent_id"] }.
flat_map do |id, hs|
hs.find { |h| h["orig_id"] == id } || hs
end
推荐阅读
- sql-server - T-SQL 如何从带有命令列表的参数中获取最后一个 T-Sql 命令
- java - 如何读取文件夹中的任何 CSV 文件并合并到一个 CSV 文件中
- assembly - 汇编 * 和 RIP 的用法?
- add-on - 获取本地ip地址
- excel - 尝试重绘 Treeview,但在 Unload 语句后重绘 Userform
- mysql - MySQL 表上的索引选择
- html - 如何在博客中制作此页脚广告以仅对唯一身份访问者开放?
- package - Salesforce 包中的个人资料
- node.js - QueryFailedError:ER_NONUNIQ_TABLE:不是唯一的表/别名:'notes'
- android - 当我将图标添加到edittext时,提示从中心转移?怎么可能对齐?