📌  相关文章
📜  如何计算 JavaScript 中对象数组中重复名称的出现次数?(1)

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

如何计算 JavaScript 中对象数组中重复名称的出现次数?

在 JavaScript 中,我们经常会使用对象数组来存储数据。有时候我们需要统计数组中每个名称出现的次数,以便进行一些统计分析工作。下面介绍两种方法:

方法一:使用 reduce 方法

reduce 方法可以将数组中的每个元素依次执行回调函数,然后返回一个累加的结果。我们可以借助 reduce 方法来统计名称出现的次数,具体实现如下:

const arr = [
  { name: '张三', age: 20 },
  { name: '李四', age: 30 },
  { name: '张三', age: 40 },
  { name: '王五', age: 25 },
  { name: '李四', age: 22 },
]

const countObj = arr.reduce((acc, cur) => {
  if (acc[cur.name]) {
    acc[cur.name]++
  } else {
    acc[cur.name] = 1
  }
  return acc
}, {})
console.log(countObj) // { '张三': 2, '李四': 2, '王五': 1 }

在回调函数中,我们使用 if 语句来判断名称是否已经存在于结果对象 acc 中,如果存在则计数器加 1,否则将计数器初始化为 1。

方法二:使用 for 循环

除了使用 reduce 方法之外,我们还可以使用普通的 for 循环来统计名称出现的次数,具体实现如下:

const arr = [
  { name: '张三', age: 20 },
  { name: '李四', age: 30 },
  { name: '张三', age: 40 },
  { name: '王五', age: 25 },
  { name: '李四', age: 22 },
]

const countObj = {}
for (let i = 0; i < arr.length; i++) {
  const name = arr[i].name
  countObj[name] = (countObj[name] || 0) + 1
}
console.log(countObj) // { '张三': 2, '李四': 2, '王五': 1 }

这里我们使用一个普通的 for 循环,依次遍历数组中的每个元素,利用对象字面量的方式初始化一个计数器 countObj。在每次循环中,我们从数组元素中取出名称,并通过 countObj[name] 来获取当前名称已经出现的次数,如果不存在则默认为 0,最后将计数器加 1。

无论是使用 reduce 方法还是 for 循环,我们都可以很方便地统计对象数组中重复名称的出现次数,便于进行各种数据分析工作。