Привет всем! У меня есть задача по работе с массивами в JavaScript. Мне нужно написать код, который будет считать сколько раз определенное значение встречается в массиве.
let numbers = [5, 7, 5, 9, 5, 7, 9, 9, 9];
// Хочу получить: число 5 встречается 3 раза, число 7 - 2 раза, число 9 - 4 раза
Пробовал разные способы, но пока не получается сделать это правильно. Может кто-то подскажет рабочий метод? Желательно простое решение, которое легко понять. Заранее спасибо за помощь!
Есть еще вариант с reduce: let count = numbers.reduce((acc, num) => num === 5 ? acc + 1 : acc, 0). Он тоже работает хорошо, только немного сложнее выглядит. Что уже пробовал и что не сработало?
я обычно использую filter для таких задач - очень просто и понятно. например let countFives = numbers.filter(x => x === 5).length даст тебе количество пятерок в массиве. если нужно посчитать все элементы сразу, то можно сделать цикл и для каждого уникального значения применить фильтр. правда не самый быстрый способ для больших массивов, но зато код получается читаемый и логичный
Можно попробовать через цикл for и объект для хранения счетчиков. Создаешь пустой объект, проходишь по массиву и для каждого элемента либо увеличиваешь счетчик на 1, либо инициализируешь его единицей если элемента еще нет. Типа for(let num of numbers) { counts[num] = (counts[num] || 0) + 1; }. В итоге получишь объект где ключи - это элементы массива, а значения - количество повторений.