找出相同属性值的对象 累加数量 汇总
const oldArray = [
{
batchNo: "1",
factoryCnName: "苹果",
goodsCnName: "pingguo",
inputNum: 1,
},
{
batchNo: "1",
factoryCnName: "苹果",
goodsCnName: "pingguo",
inputNum: 3,
},
{
batchNo: "1",
factoryCnName: "梨子",
goodsCnName: "lizi",
inputNum: 3,
},
{
batchNo: "1",
factoryCnName: "梨子",
goodsCnName: "lizi",
inputNum: 3,
},
{
batchNo: "2",
factoryCnName: "苹果",
goodsCnName: "pingguo",
inputNum: 3,
},
];
const sumTabData = countTabFun(oldArray);
export function countTabFun(arr) {
const data = arr.reduce((total, cur, index) => {
let hasValue = total.findIndex((current) => {
return (
current.batchNo == cur.batchNo &&
current.factoryCnName == cur.factoryCnName &&
current.goodsCnName == cur.goodsCnName
);
});
hasValue == -1 && total.push(cur);
hasValue != -1 &&
(total[hasValue].inputNum = total[hasValue].inputNum + cur.inputNum);
return total;
}, []);
return data;
}