function GroupBy(datas,keys,callBack) {
const list = datas || [];
const groups = [];
list.forEach(v => {
const key = {};
const data = {};
keys.forEach(k => {
key[k] = v[k];
});
let group = groups.find(v => {
return v._key === JSON.stringify(key);
});
if (!group) {
group = {
_key:JSON.stringify(key),
key: key,
};
groups.push(group);
}
if(callBack){
group.data = callBack(group.data,v);
group.total=group.total||0;
group.total++;
}else {
group.data=group.data||[];
group.data.push(v);
}
});
return groups;
}
测试函数
window.onload=function () {
const data = [
{key:1,key2:1,v:123},
{key:1,key2:1,v:55},
{key:2,key2:1,v:85},
{key:1,key2:2,v:15},
{key:2,key2:1,v:99}
];
var d = GroupBy(data,['key','key2'],(d,v)=> {
d = d||0;
return d+=v.v;
});
console.log(d);
var a = GroupBy(data,['key','key2']);
console.log(a);
};
效果图
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有