Итак, я пытаюсь выяснить, как создать ассоциативный массив, в котором перечислены элементы массива, и количество раз, когда происходит каждый элемент, не зная, какие элементы заранее.
В качестве примера предположим, что у меня есть массив животных: var animals = ['Rhino', 'Lion', 'Dog', 'Parrot', 'Parrot', 'Cat', 'Zebra', 'Rhino']
Я хотел бы сгенерировать объект, который в конечном итоге выглядит следующим образом:
{ 'Rhino': 2, 'Lion': 1, 'Dog': 1, 'Parrot': 2, 'Cat': 1, 'Zebra': 1 }
Если бы я знал, что животные в массиве были заранее, я мог бы, конечно, сделать что-то вроде:
var animalsCount = {};
var numberOfRhinos = animals.filter(function(animal) {
return animal == 'Rhino'
}).length;
animalsCount['Rhino'] = numberOfRhinos
чтобы получить объект, как хотелось бы. Проблема, конечно, в том, что это становится довольно продолжительным и повторяющимся в зависимости от количества животных. Кроме того, если я не знаю, что такое тип каждого животного, я не могу создать объект таким образом. Должен быть способ сделать это, не зная этой информации, но я застрял.