前提
开发中遇到了一个需求,后端返回来的数据是一个数组对象,type_name
有一些相同的数据,需要前端进行合并,每件衣服的尺码的数量进行增加,根据这个需求一下对应代码:
var arr = [
{
"type_name": "衬衫",
"S": 0,
"M": 1,
"L": 0,
"XL": 0,
"2XL": 0,
"3XL": 0,
"4XL": 0,
"5XL": 0,
"6XL": 0
},
{
"type_name": "冬裤",
"S": 0,
"M": 1,
"L": 0,
"XL": 0,
"2XL": 0,
"3XL": 0,
"4XL": 0,
"5XL": 0,
"6XL": 0
},
// ... 剩下的对象
];
// 创建一个空对象,用于存储合并后的结果
var mergedArr = {};
// 遍历原始数组
arr.forEach(function(obj) {
var typeName = obj.type_name;
// 如果该分类已存在于合并后的对象中,则累加各个尺码的数量
if (mergedArr.hasOwnProperty(typeName)) {
for (var key in obj) {
if (key !== 'type_name') {
mergedArr[typeName][key] += obj[key];
}
}
} else {
// 如果该分类不存在于合并后的对象中,则直接将该对象添加到合并后的对象中
mergedArr[typeName] = obj;
}
});
// 将合并后的结果转换为数组形式
var mergedArray = Object.values(mergedArr);
// 打印合并后的数组
console.log(mergedArray);