如何在 Nodejs 中通过多个键对 JSON 数组进行分组。
是否有任何带有下划线或 lodash 的解决方案(如果是纯 javascript 则无关紧要)?
数组:
[{ key: '2017-1', y: 1, gkey: 'y' },
{ key: '2017-1', x: 1, gkey: 'x' }]
预期结果:
[{ key: '2017-1', x: 1, y:1 }]
最佳答案
您可以使用reduce
和Object.values
let arr = [
{ key: '2017-1', y: 1, gkey: 'y' },
{ key: '2017-1', x: 1, gkey: 'x' },
{ key: '2017-2', x: 1, gkey: 'x' },
];
let result = Object.values(arr.reduce((c, {key,gkey,...r}) => {
c[key] = c[key] || {key};
c[key] = Object.assign(c[key], r);
return c;
}, {}));
console.log(result);
如果您不能在您的 nodejs 版本上使用 Object.values
,您可以:
let arr = [
{ key: '2017-1', y: 1, gkey: 'y' },
{ key: '2017-1', x: 1, gkey: 'x' },
{ key: '2017-2', x: 1, gkey: 'x' },
];
let temp = arr.reduce((c, {key,gkey,...r}) => {
c[key] = c[key] || {key};
c[key] = Object.assign(c[key], r);
return c;
}, {});
let result = [];
for (let key in temp) result.push(temp[key]);
console.log(result);
关于javascript - 如何通过多个键对 JSON 数组数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50066843/