有时候会需要对一些复杂的数据根据某个维度来进行整理,下面是我自己觉得还算比较好用的方法
// 以下一串数据,希望以ean为维度进行整合,相同的qty相加 const skuList = [ { ean: '0001', qty: 5}, { ean: '0001', qty: 4}, { ean: '0003', qty: 1}, { ean: '0002', qty: 2}, { ean: '0003', qty: 3} ] // 去重 function groupBy(array,f) { const groups = {}; array.forEach(function(o){ const group = JSON.stringify(f(o)); groups[group] = groups[group] || []; groups[group].push(o); }) return Object.keys(groups).map(function(group){ return groups[group]; } ) } // 统计数量 const result = groupBy(skuList,function(arr) { return arr.ean }).map(item => { return {...item[0],qty: item.reduce((p,c) => {return p+ c.qty},0)} }) // 最后的结果
[
{ ean: '0001', qty: 9},
{ ean: '0003', qty: 4},
{ ean: '0002', qty: 2}
]