最近项目中有一个需求是后端返回的数据是所有的,但是产品需要的数据是需要分组并且进行计算求和的,既然如此,那我们就自定义一个分组求和吧,小二,上代码!!!
// 数组分组求和
let groupSum = {
groupBy: function (array, callback) {
return new Promise((resolve) => {
let groups = {};
array.forEach(item => {
let group = JSON.stringify(callback(item));
groups[group] = groups[group] || [];
groups[group].push(item);
});
let res = Object.keys(groups).map(group => {
return groups[group];
});
resolve(res)
})
},
getSum: function (arr,bykey) {
return new Promise((resolve) => {
let res = this.groupBy(arr, function (item) {
return item.shopId
}).then(res => {
console.log(res)
let resultSum = res.map(item => {
let sum = item.reduce((total, curr) => {
return total + curr[bykey]
}, 0);
return sum
})
return resultSum
})
resolve(res)
})
}
}
let testArr = [
{ shopId: 1, shopName: '测试', money: 0, },
{ shopId: 2, shopName: '123', money: 1 },
{ shopId: 1, shopName: '测试', money: 2 },
{ shopId: 1, shopName: '测试', money: 3 },
{ shopId: 2, shopName: '123', money: 4 },
{ shopId: 1, shopName: '测试', money: 5 },
{ shopId: 2, shopName: '123', money: 6 },
]
groupSum.getSum(testArr,'money').then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!