📅  最后修改于: 2023-12-03 15:01:46.306000             🧑  作者: Mango
在开发中,经常会遇到需要对数组中的元素进行统计的情况,有时候我们需要对数组中的对象进行统计,不同的对象可能出现的次数不同,本文将介绍如何使用 Javascript 计算对象数组中出现的次数。
reduce() 方法可以对数组中的所有元素进行累计计算,我们可以利用这个方法来统计每个对象在数组中出现的次数。代码如下:
const arr = [
{name: 'apple', color: 'red'},
{name: 'banana', color: 'yellow'},
{name: 'apple', color: 'green'},
{name: 'apple', color: 'red'}
];
const count = arr.reduce((prev, cur) => {
const name = cur.name;
if (name in prev) {
prev[name]++;
} else {
prev[name] = 1;
}
return prev;
}, {});
console.log(count); // { apple: 3, banana: 1 }
reduce() 方法接收一个函数作为参数,该函数接收两个参数,第一个参数是上一次计算的结果,第二个参数是当前的数组元素。在这个例子中,我们将第一个参数初始化为一个空对象 {},第二个参数是当前的对象,我们获取该对象的 name 属性作为 key,然后判断该 key 是否在 prev 中出现过,如果出现过,就将该 key 对应的值加 1,否则就将该 key 插入 prev 并赋值为 1。最终返回 prev。
我们也可以使用 forEach() 方法遍历数组,然后统计每个对象出现的次数,代码如下:
const arr = [
{name: 'apple', color: 'red'},
{name: 'banana', color: 'yellow'},
{name: 'apple', color: 'green'},
{name: 'apple', color: 'red'}
];
const count = {};
arr.forEach((item) => {
const name = item.name;
if (name in count) {
count[name]++;
} else {
count[name] = 1;
}
});
console.log(count); // { apple: 3, banana: 1 }
forEach() 方法接收一个函数作为参数,该函数接收一个参数,表示当前遍历到的数组元素。在这个例子中,我们遍历数组 arr,然后获取每个对象的 name 属性作为 key,然后判断该 key 是否在 count 中出现过,如果出现过,就将该 key 对应的值加 1,否则就将该 key 插入 count 并赋值为 1。
本文介绍了两种方式来计算对象数组中出现的次数,即使用 reduce() 方法和 forEach() 方法。无论哪种方式,都需要注意判断 key 是否已经在对象中出现过,如果出现过,就将对应的值加 1,否则就将该 key 插入对象并赋值为 1。希望本文能够帮助你更好地处理对象数组中的元素。