首页 > 解决方案 > 在 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

标签: javascripttypescriptecmascript-6underscore.jstypescript2.0

解决方案


您可以使用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);


推荐阅读