当前位置: 博客 /  JavaScript  / JavaScript中对象数组按指定Key值分组

JavaScript中对象数组按指定Key值分组

数组

假如我们有一个对象数组array,现在我们想按类别category来区分老师和学生

let array = [
 {category: "teacher", name: "Mr.Li", age: 40},
 {category: "teacher", name: "Mr.Wang", age: 20},
 {category: "student", name: "Xiao Ming",age: 12},
 {category: "student", name: "Xiao Hua", age: 20}
]

函数

函数classifiedAccordingToKey可以解决这个问题,它需要两个参数,第一个是一个对象数组,第二个是用来分组的key值

function classifiedAccordingToKey(objectArray,key){
 var newObj = {};
 objectArray.forEach(function (obj) {
  var array = newObj[obj[key]] || [];
  array.push(obj);
  newObj[obj[key]] = array;
 });
return newObj;
}

使用

现在我们来使用,定义一个新的变量,将array数组和key传给函数,然后我们打印看看结果

let viewGroup = classifiedAccordingToKey(array,'category')
console.log("我是分类过的结果,是一个object:")
console.log(viewGroup)
console.log("你可以查看此object的所有key:")
console.log(Object.keys(viewGroup));
console.log("你可以查看此object的所有value:")
console.log(Object.values(viewGroup));

结果

结果截图

按其它key分类

当然也可以按照年龄分类,代码和结果如下:

let viewGroup = classifiedAccordingToKey(array,'age')

结果截图

- END -