JavaScript统计数组中相同的数量

我正在参加「掘金·启航计划」

在JavaScript中,我们经常需要对数组中对象的属性进行统计。例如,我们可能有一个包含产品名称和数量的数组,我们需要统计每个产品名称出现的次数,并将其数量相加。在本文中,我们将介绍如何使用JavaScript来实现这一功能。

实现方法

我们可以使用reduce()方法和一个对象来统计数组中相同关键词的数量。reduce()方法是JavaScript中的一个高阶函数,它接收一个回调函数作为参数,并迭代数组中的每个元素。回调函数上一次的返回值将成为下一次调用时的第一个参数。

const products = [
  { name: 'Apple', num: 2 },
  { name: 'Orange', num: 1 },
  { name: 'Banana', num: 3 },
  { name: 'Apple', num: 4 }
]

const result = products.reduce((acc, cur) => {
  if (acc[cur.name]) {
    acc[cur.name] += cur.num
  } else {
    acc[cur.name] = cur.num
  }
  return acc
}, {})

在上面的代码中,我们定义了一个products数组,它包含了四个产品的名称和数量。然后,我们使用reduce()方法将products数组转换为一个对象。在回调函数中,我们检查当前元素的名称是否已经存在于对象中,如果是,则将数量相加,否则将当前元素添加到对象中。

使用方法

将上面的代码放入一个函数中,将products数组作为参数传递给它,然后调用这个函数即可得到统计结果。

function countKeywords(products) {
  const result = products.reduce((acc, cur) => {
    if (acc[cur.name]) {
      acc[cur.name] += cur.num
    } else {
      acc[cur.name] = cur.num
    }
    return acc
  }, {})
  return Object.entries(result).map(([name, num]) => ({ name, num }))
}

在上面的代码中,我们定义了一个名为countKeywords()的函数,并将products数组作为参数传递给它。函数返回一个新的数组,其中包含每个产品名称以及相应的数量。

测试方法

我们可以使用以下代码来测试countKeywords()函数:

const products = [
  { name: 'Apple', num: 2 },
  { name: 'Orange', num: 1 },
  { name: 'Banana', num: 3 },
  { name: 'Apple', num: 4 }
]

console.log(countKeywords(products))

在上面的代码中,我们定义了一个products数组,并将其作为参数传递给countKeywords()函数。然后,我们将结果打印到控制台中。

结论

在JavaScript中,我们可以使用reduce()方法和一个对象来统计数组中相同关键词的数量。使用reduce()方法可以简化代码,而使用对象可以提高效率。通过封装这些代码并编写一些测试用例,我们可以轻松地在JavaScript中实现这一功能。

原文链接:https://juejin.cn/post/7230005899507023932 作者:饺子不放糖

(0)
上一篇 2023年5月7日 上午10:26
下一篇 2023年5月7日 上午10:36

相关推荐

发表回复

登录后才能评论