javascript - 如何通过多个键对 JSON 数组数据进行分组

标签 javascript json node.js group-by grouping

如何在 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 }]

最佳答案

您可以使用reduceObject.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/

相关文章:

ios - Swift 3 请求 post ,响应返回 nil

python - 无法将JSON转换为Python列表

node.js - Node js 模块是否跨多个 HTTP 请求进行缓存?

javascript - Express JS + Multer 文件上传前查询数据库

javascript - ImmutableJS fromJS() 和 Map() "ownerID"不匹配

javascript - Grails:JavaScript集成

javascript - 格式化字符串的对象

javascript - 如何使用谷歌应用程序脚本调用 SOAP 网络服务

javascript - Bootstrap 导航栏有效

c# - 如何使用 JSON.Net 反序列化此 json 数据?