js将对象数据根据属性归类分成多个数组场景:
⼀个数组内含有多个对象,需要根据对象的属性将同⼀值的对象归为⼀个数组。
js代码:
//数据归类⽅法
funtion classify(arr, key) {
let kind = []; //存放属性标识
let newArr = []; //返回的数据
arr.map((item) => {
// 判断key是否存在,不存在则添加
if (!kind.includes(item[key])) {
kind.push(item[key]); //kind添加新标识
newArr.push([]); //添加数组
}
let index = kind.indexOf(item[key]); //返回带有标识在kind内的下标,判断加⼊哪个数组
newArr[index].push(item); //将对象存⼊数组
});
return newArr;
}
调⽤的⽅法:
js 二维数组//测试数据
let testArr = [
{name:"张三",age:"18",gender:"男"},
{name:"李四",age:"22",gender:"男"},
{name:"王五",age:"17",gender:"⼥"},
{name:"刘丽",age:"18",gender:"⼥"},
{name:"李磊",age:"22",gender:"男"},
{name:"杨梅",age:"18",gender:"⼥"}
];
//调⽤⽅法,对象被判断的属性值相同,则在同个数组内
let sameType = [];
//单次调⽤,输出⼆维数组
sameType.push(classify(testArr,"age"));
console.log(sameType);
/
/循环调⽤,可判断多个属性,输出多维数组
classify(testArr,"age").map((item) = {
sameType.push(classify(item,"gender"))
});
console.log(sameType);