ruby - Ruby:使用出现限制(?)对哈希进行分组
问题描述
给定下面示例的对象数组。
[
{ group: '1' },
{ group: '1' },
{ group: '1' },
{ group: '2' },
{ group: '1' }
]
预期输出为:
[
[{ group: '1' }, { group: '1' }, { group: '1' }],
[{ group: '2' }],
[{ group: '1' }]
]
重要的是要注意,即使“组 1”出现 4 次,也会有 2 个不同的分组,因为我们也在数组中获取对象的位置......组名称也是任意的。
解决方案
Ruby 使用内置函数:Chunk
枚举项目,根据块的返回值将它们分块在一起。
返回相同块值的连续元素被分块在一起。
这看起来正是您想要的:
data
.chunk{ |item| item[:group] }
.map{ |_chunk_value, items| items } # chunk gives a pair of the value the chunk used and the values in the chunk, but we only need the values.
推荐阅读
- xml - ssis - 获取更多 xml 文件已定义为可选标签的数据
- android - Activity 中 OnBackPressedCallback 的默认行为?
- c - 比较这些二叉树节点实现的空间复杂度?
- python - 使用 SERIAL 自动生成 ID 在 Postgresql 数据库中保存数据框
- java - 使用实验功能 (download.default_directory) 结合使用 selenide 浏览器默认设置为 selenide 设置 ChromeDriver
- vue.js - Nuxt 动态组件导入
- python - PyQt5 事件过滤器对象检测
- google-sheets - 是否有代码可以强制用户在单元格中输入特定格式?
- angular - Angular ngrx 8 选择器不返回任何值
- json - 如何在 AWS CLI SNS 消息中提供 JSON?