把对象数组按照某一个属性(或某几个属性)进行分类
//把对象数据按照某一个属性进行分类
function sort_pro(data, keys = []) { //keys可以传一个数组
var c = [];
var d = {};
for (var element of data) {
let element_keyStr = "";
let element_key = [];
let element_keyObj = {};
for (var key of keys) {
element_key.push(element[key]);
element_keyObj[key] = element[key];
}
element_keyStr = element_key.join("_");
if (!d[element_keyStr]) {
c.push({
...element_keyObj,
children: [element]
});
d[element_keyStr] = element;
} else {
for (var ele of c) {
let isTrue = keys.some(key => {
return ele[key] != element[key];
});
if (!isTrue) {
ele.children.push(element);
}
}
}
}
return c;
}
var data = [
{name:'张三',score:56},
{name:'张三',score:70},
{name:'李四',score:100}
]
sort_pro(data ,['name'])
结果:


浙公网安备 33010602011771号