首页 > 解决方案 > 计算多维数组中的出现次数

问题描述

我有一个看起来像这样的多维数组

[1:[1:mammal,2:cat,3:fur],
 2:[1:mammal,2:dog,3:fur],
 3:[1:mammal,2:cat,3:fur],
 4:[1:fish,2:trout,3:scales]]

我希望计算动物的出现次数以返回这样的数组

[cat:2,dog:1,trout:1]

我一直在尝试使用 for 循环失败,有更好的方法吗?

标签: javascriptarraysmultidimensional-array

解决方案


您的语法不正确,返回带有键值对的对象会更容易。

下面是一个使用reduce函数的例子:

const animals = [['mammal', 'cat', 'fur'], ['mammal', 'dog', 'fur'], ['mammal', 'cat', 'fur'], ['fish', 'trout', 'scales']]

function count (animals) {
  return animals.reduce((acc, arr) => {
      for (const item of arr) {
	  acc[item] = acc[item] !== undefined ? acc[item] + 1 : 1
      }

      return acc
  }, {})
}

console.log(count(animals))


推荐阅读