【发布时间】:2021-08-21 12:50:12
【问题描述】:
我有一个这样的对象数组
const statuses = [
{time: '21/1/1990', 'Status.sold': 8848},
{time: '21/1/1990', 'Status.reserved': 8804},
{time: '21/1/1991', 'Status.reserved': 8756},
{time: '21/1/1991', 'Status.sold': 8732},
{time: '21/1/1992', 'Status.killed': 8691},
{time: '21/1/1992', 'Status.sold': 8620},
{time: '21/1/1993', 'Status.held': 8511},
{time: '21/1/1993', 'Status.killed': 8511},
{time: '21/1/1994', 'Status.sold': 8498},
];
我想要实现的是将所有Status. 属性放在一起并按time 属性分组,这对所有对象都是通用的。所以最终的结果会是这样的
const statuses = [
{time: '21/1/1990', sold: 8848, killed: 0, reserved: 8804, held: 0},
{time: '21/1/1991', sold: 8732, killed: 0, reserved: 8756, held: 0},
{time: '21/1/1992', sold: 8620, killed: 8691, reserved: 0, held: 0},
{time: '21/1/1993', sold: 0, killed: 8511, reserved: 0, held: 8511},
{time: '21/1/1994', sold: 8498, killed: 0, reserved: 0, held: 0},
];
我尝试过类似的方法
const result = statuses.map((obj) => {
return { ...obj,
sold: obj['Status.sold'] ? obj['Status.sold'] : 0,
reserved: obj['Status.reserved'] ? obj['Status.reserved'] : 0,
killed: obj['Status.killed'] ? obj['Status.killed'] : 0,
held: obj['Status.held'] ? obj['Status.held'] : 0
};
});
但我不确定如何按time 对它们进行分组。如何将reduce方法与此代码结合使用?提前致谢!
【问题讨论】:
-
使用
reduce函数
标签: javascript arrays object ecmascript-6 reduce