把对象数组按照某一个属性(或某几个属性)进行分类
//把对象数据按照某一个属性进行分类
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'])
结果: