首先 提供重组方法
// let a = [{id: 1}, {id: 3}, {id: 2}, {id: 3}, {id: 1}]; // [[{id: 1}, {id: 1}], [{id: 2}], [{id: 3}, {id: 3}]]
export function reduceList(val, src) { // 通过某个属性值相同判断—重组数组对象
let b = val.reduce((r, x) => ((r[x[src]] || (r[x[src]] = [])).push(x), r), {});
let c = Object.keys(b).map(x => b[x]);
return c;
}
如果多个属性判断,此方法只有一个入参。换个思路,可以把多以属性值拼接为一个属性来判断
list =[{servmileage:‘2’,servtime :‘5’,servitemcode:‘sx2222’},{servmileage:‘2’,servtime :‘5’,servitemcode:‘sx2332’},{servmileage:‘2’,servtime :‘6’,servitemcode:‘sx2222’},{servmileage:‘2’,servtime :‘5’,servitemcode:‘sx2332’},{servmileage:‘2’,servtime :‘5’,servitemcode:‘sx2222’},]
let newdata = []
for (let k in list) {
newdata.push({
…list[k],
KEY: list[k].servmileage + list[k].servtime + list[k].servitemcode,
}); }// 重组判断条件。 使用项目名,服务次数,服务公里数拼接校验
newArr = reduceList(newdata,‘KEY’); // 重组数组对象