📌  相关文章
📜  javascript 计算对象数组中出现的次数 - Javascript (1)

📅  最后修改于: 2023-12-03 15:01:46.306000             🧑  作者: Mango

Javascript 计算对象数组中出现的次数

在开发中,经常会遇到需要对数组中的元素进行统计的情况,有时候我们需要对数组中的对象进行统计,不同的对象可能出现的次数不同,本文将介绍如何使用 Javascript 计算对象数组中出现的次数。

方法一:使用 reduce() 方法

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() 方法

我们也可以使用 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。希望本文能够帮助你更好地处理对象数组中的元素。