Подсчет вхождений в многомерном массиве - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть многомерный массив, который выглядит следующим образом:

[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]]

I wi sh, чтобы подсчитать количество вхождений животного для возврата массива, такого как этот

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

Я безуспешно пытался с помощью для l oop, есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 15 апреля 2020

Ваш синтаксис неправильный, будет проще вернуть объект с парами ключ-значение.

Вот пример использования функции 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))
...