如何按type与code分组数组元素并重构quantity属性?
按type和code分组数组并转换字段结构的实现方案
原始数据(注:原数据存在语法错误,已修正)
const data = [ { "type":"abc", "quantity":36, "code":"EDF" }, { "type":"abc", "quantity":40, "code":"SFDF" }, { "type":"yrf", "quantity":22, "code":"SFDF" }, { "type":"yrf", "quantity":19, "code":"EDF" } ];
需求说明
按type对数组元素分组,将同一type下不同code对应的quantity转换为quantity_{code}格式的字段,最终得到如下结构的数组:
const resultantArray = [ { "type":"abc", "quantity_EDF":36, "quantity_SFDF":40 }, { "type":"yrf", "quantity_EDF":19, "quantity_SFDF":22 } ];
实现方法(以JavaScript为例)
通过遍历数组+临时对象分组的方式即可实现,具体代码如下:
// 创建临时对象存储分组结果 const groupMap = {}; // 遍历原始数组处理每个元素 data.forEach(item => { // 若当前type未在分组容器中,初始化对应结构 if (!groupMap[item.type]) { groupMap[item.type] = { type: item.type }; } // 拼接字段名并赋值对应的quantity值 groupMap[item.type][`quantity_${item.code}`] = item.quantity; }); // 将分组对象的取值转为数组,得到最终结果 const resultantArray = Object.values(groupMap); console.log(resultantArray);
代码说明
- 用
groupMap作为临时容器,以type为键存储每个分组的对象 - 遍历元素时,若当前
type未初始化,则创建包含type字段的新对象 - 动态拼接
quantity_{code}作为字段名,将对应quantity值赋值到分组对象中 - 最后通过
Object.values()提取分组对象中的值,转换为目标数组结构
内容的提问来源于stack exchange,提问作者Rosy
相关产品推荐
相关产品推荐

