javascript - 在 es6 中重组 groupby 对象数组
问题描述
这是我拥有并且需要将其格式化为预期的数据响应:基于 rowindex 需要格式化对象数组。赞赏更好的解决方案。
输入 :
productdata:[ { rowIndex:1 , columnKey:'productName'},
{ rowIndex:1 , columnKey:'productID'},
{ rowIndex:1 , columnKey:'productDate'},
{ rowIndex:2 , columnKey:'productName'},
{ rowIndex:2 , columnKey:'productID'},
{ rowIndex:2 , columnKey:'productDate'},
],
预期的 O/p 产品数据:
[ { rowIndex:1 , columnKey:'productName'},
{ rowIndex:1 , columnKey:'productID'},
{ rowIndex:1 , columnKey:'productDate'}],
[{ rowIndex:2 , columnKey:'productName'},
{ rowIndex:2 , columnKey:'productID'},
{ rowIndex:2 , columnKey:'productDate'}],etc
解决方案
您可以使用Array.prototype.reduce
创建数组
const productData = [
{ rowIndex:1 , columnKey:'productName'},
{ rowIndex:1 , columnKey:'productID'},
{ rowIndex:1 , columnKey:'productDate'},
{ rowIndex:2 , columnKey:'productName'},
{ rowIndex:2 , columnKey:'productID'},
{ rowIndex:2 , columnKey:'productDate'},
];
const result = productData.reduce((acc, curr) => {
const arrIndex = curr.rowIndex - 1;
if (acc[arrIndex]) acc[arrIndex].push(curr);
else acc[arrIndex] = [curr];
return acc;
}, []);
console.log(result);
推荐阅读
- jquery - 如何让我的网站在大屏幕上看起来更好?
- ios - 点击后隐藏视图
- c# - 有没有更好的方法来重构这段代码?
- protractor - 即使使用 browser.wait 和 helper 函数,量角器测试也不一致
- java - 不使用预定义函数打印数组长度
- html - 当父母的父母上有动画时,为什么我的 iframe 会出错?
- java - 使用 String.format 时如何缩进新行?
- javascript - 传统的 angularjs 语法到 es6 语法以便迁移
- smtpclient - 发送 SMTP 电子邮件的 Powershell 脚本失败
- r - r中数据帧分位数计算中的唯一中断错误