javascript - 对象数组,按父对象分组
问题描述
我有一个对象数组。我希望能够对父对象中的对象进行分组,父对象由broker: true
. 有没有办法转换这个:
const data = [
{ id: 1, broker: true },
{ id: 2, broker: false },
{ id: 3, broker: false },
{ id: 4, broker: true },
{ id: 5, broker: false },
{ id: 6, broker: true },
{ id: 7, broker: false },
{ id: 8, broker: false },
{ id: 9, broker: false },
];
变成这样:
const data = [
{ id: 1, broker: true, chunks: [
{ id: 2, broker: false },
{ id: 3, broker: false },
]},
{ id: 4, broker: true, chunks: [
{ id: 5, broker: false },
]},
{ id: 6, broker: true, chunks: [
{ id: 7, broker: false },
{ id: 8, broker: false },
{ id: 9, broker: false },
]},
];
解决方案
您可以检查broker
属性并将新对象推送到结果集,或将对象推送到前一个对象的块数组。
const
data = [{ id: 1, broker: true }, { id: 2, broker: false }, { id: 3, broker: false }, { id: 4, broker: true }, { id: 5, broker: false }, { id: 6, broker: true }, { id: 7, broker: false }, { id: 8, broker: false }, { id: 9, broker: false }],
grouped = data.reduce((r, o) => {
if (o.broker) {
r.push(Object.assign({}, o, { chunks: [] }));
} else {
r[r.length - 1].chunks.push(o);
}
return r;
}, []);
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- java - Java矩形位置错误
- c - 使用 getchar() 计算 C 中的新行、新制表符和空格
- java - 我尝试滚动两个骰子的结果 - 有错误吗?
- python-3.x - 如何在 Django 的一个查询中保存所有模型更改
- javascript - 我在使用 Vue.js 创建待办事项列表时遇到问题
- viola-jones - 确定 Haar 特征的阈值
- .htaccess - 使用 IP 而不是域阻止任何内容
- python - 无法通过带有 webdriver 的 xpath 为 Python 上的标签找到元素
- javascript - 使用 Selenium 滚动对网页进行不完整的抓取
- c# - C# .NET Framework 4.8 API 调用不适用于新 URI