JavaScript 对象数组分类方法:按属性值分组
以下是一个用 JavaScript 实现对对象数组根据属性值进行分类的方法:
function groupBy(arr, property) {
return arr.reduce(function(memo, x) {
if (!memo[x[property]]) { memo[x[property]] = []; }
memo[x[property]].push(x);
return memo;
}, {});
}
这个方法接收两个参数:一个对象数组和一个属性名。它返回一个以该属性名为键,对应值为该属性值的对象数组为值的对象。
例如,假设我们有一个对象数组:
var people = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 25 },
{ name: 'Dave', age: 30 }
];
我们可以使用该方法按年龄对人进行分类:
var peopleByAge = groupBy(people, 'age');
// peopleByAge 现在是这样的对象:
// {
// '25': [
// { name: 'Alice', age: 25 },
// { name: 'Charlie', age: 25 }
// ],
// '30': [
// { name: 'Bob', age: 30 },
// { name: 'Dave', age: 30 }
// ]
// }
现在我们可以很容易地找到所有年龄为 25 岁的人或 30 岁的人了。
原文地址: https://www.cveoy.top/t/topic/m067 著作权归作者所有。请勿转载和采集!