var newarr = [
{
materialInfos: [
{
materialName: "三元极片",
materialId: "274a771324844f919e6260df17b50d50",
discount: 99,
},
{
materialName: "七七八八",
materialId: "274a771324844f919e6260df17b50d50",
discount: 99,
},
],
minDiscount: 99,
echelonNum: 0,
elementNum: 1,
maxDiscount: 99,
specialNum: 0,
receiptDate: "2021-12-08",
},
{
materialInfos: [
{
materialName: "三元极片",
materialId: "274a771324844f919e6260df17b50d50",
discount: null,
},
{
materialName: "钴酸锂极片",
materialId: "274a7713456464119e65df3f443s5205",
discount: null,
},
],
minDiscount: null,
echelonNum: 1,
elementNum: 0,
maxDiscount: null,
specialNum: 1,
receiptDate: "2021-12-10",
},
];
// 分两个步骤
// 1.先把多维数组转成一维
let arr3 = [];
newarr.map((el) => {
el.materialInfos.map((item) => arr3.push(item));
});
// 2.定义方法
function handlerDatas(arr) {
let obj = {};
arr.forEach((item, index) => {
let { materialName } = item;
console.log(materialName);
if (!obj[materialName]) {
obj[materialName] = {
materialName,
discount: [],
type: "line",
};
}
//我这里有判单值是否为null,可以直接写 obj[materialName].discount.push(item.discount)
item.discount
? obj[materialName].discount.push(item.discount)
: obj[materialName].discount.push(0);
});
return Object.values(obj);
}
// 调用
console.log(handlerDatas(arr3));
js相同的key合并成新数组
最新推荐文章于 2022-10-18 10:31:54 发布