简体   繁体   English

javascript 如何对 object 的单个数组进行分组和组合

[英]javascript how to group and combine single array of object

I have an array of object below,我下面有一个 object 的数组,

 [ { locationCode: 'GMP', Qr: 46 }, { locationCode: 'CMT', Qr: 35 }, { locationCode: 'GMP', Cash: 29 }, { locationCode: 'CMT', Cash: 26 }, { locationCode: 'CMS', Qr: 22 }, { locationCode: 'CMT', Voucher: 6 }, { locationCode: 'CMS', Cash: 2 } ]

I want to group locationCode and combine others into one object like this我想将locationCode分组并像这样将其他组合成一个 object

 [ { locationCode: 'GMP', Qr: 46, Cash: 29 }, { locationCode: 'CMT', Qr: 35, Cash: 26, Voucher: 6 }, { locationCode: 'CMS', Qr: 22, Cash: 2 } ]

Can someone explain that with Javascript or lodash, Thanks!有人可以用 Javascript 或 lodash 解释一下吗,谢谢!

You can easily achieve this result using Map您可以使用Map轻松实现此结果

 const arr = [ { locationCode: "GMP", Qr: 46 }, { locationCode: "CMT", Qr: 35 }, { locationCode: "GMP", Cash: 29 }, { locationCode: "CMT", Cash: 26 }, { locationCode: "CMS", Qr: 22 }, { locationCode: "CMT", Voucher: 6 }, { locationCode: "CMS", Cash: 2 }, ]; const map = new Map(); arr.forEach((o) => map.set(o.locationCode, {...(map.get(o.locationCode)?? {}), ...o }) ); const result = [...map.values()]; console.log(result);
 /* This is not a part of answer. It is just to give the output fill height. So IGNORE IT */.as-console-wrapper { max-height: 100%;important: top; 0; }

You can use Array.reduce to create an object keyed by locationCode , we'd also use object destructuring to assemble the object at each key value.您可以使用Array.reduce创建一个由locationCode键控的 object,我们还将使用 object destructuring在每个键值处组装 object。

 const input = [ { locationCode: 'GMP', Qr: 46 }, { locationCode: 'CMT', Qr: 35 }, { locationCode: 'GMP', Cash: 29 }, { locationCode: 'CMT', Cash: 26 }, { locationCode: 'CMS', Qr: 22 }, { locationCode: 'CMT', Voucher: 6 }, { locationCode: 'CMS', Cash: 2 } ] const result = Object.values(input.reduce((acc, cur) => { acc[cur.locationCode] = acc[cur.locationCode] || { locationCode: cur.locationCode }; acc[cur.locationCode] = {...acc[cur.locationCode], ...cur }; return acc; }, {})) console.log('Result:', result);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

You could assign the object to an object, grouped by locationCode .您可以将 object 分配给 object,按locationCode分组。

 const data = [{ locationCode: 'GMP', Qr: 46 }, { locationCode: 'CMT', Qr: 35 }, { locationCode: 'GMP', Cash: 29 }, { locationCode: 'CMT', Cash: 26 }, { locationCode: 'CMS', Qr: 22 }, { locationCode: 'CMT', Voucher: 6 }, { locationCode: 'CMS', Cash: 2 }], result = Object.values(data.reduce((r, o) => { Object.assign(r[o.locationCode]??= {}, o); return r; }, {})); console.log(result);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在JavaScript中将数组合并为单个对象 - Combine Array(s) into single object in JavaScript 如何将 object 数组中任何给定数组属性中的所有唯一元素组合到 javascript 中的单个数组中? - How to combine all unique element in any given array property from array of object into single array in javascript? 如何将对象键/值组合成单个数组? - How to combine object key/value into single array? 如何将对象数组中的列值组合到单个 object 与 JavaScript 中的字符串值 - How to combine column values from an array of objects to a single object with string values in JavaScript Javascript - 如何将单独的单个阵列组合到单个阵列? - Javascript - How to combine seperate individual array to single array? 如何将 object 数组分组为 javascript 中的多维数组 - how to group object array to multidimensional array in javascript 如何在同一数组中将具有相同键的对象数组分组为对象? - How to group an array of object with same key in a single array as object? 如何将两个javascript数组合并为一个按日期组合 - How to combine two javascript array into one and group by date javascript根据ES6中的单个项目对象数组合并对象数组 - javascript combine array of object based on a single item object array in ES6 如何根据 JavaScript 中的相似属性组合单个数组元素? - How to combine single array elements based on similar property in JavaScript?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM