Вот несколько методов JavaScript для подсчета вхождений элементов в массив:
-
Использование цикла for и объекта для хранения счетчиков:
function countOccurrences(arr) { var counts = {}; for (var i = 0; i < arr.length; i++) { var item = arr[i]; counts[item] = counts[item] ? counts[item] + 1 : 1; } return counts; } -
Использование метода уменьшения():
function countOccurrences(arr) { return arr.reduce(function(counts, item) { counts[item] = counts[item] ? counts[item] + 1 : 1; return counts; }, {}); } -
Использование объекта Map:
function countOccurrences(arr) { var counts = new Map(); arr.forEach(function(item) { counts.set(item, (counts.get(item) || 0) + 1); }); return counts; } -
Использование метода array.reduce() со стрелочной функцией ES6:
const countOccurrences = arr => arr.reduce((counts, item) => { counts[item] = counts[item] ? counts[item] + 1 : 1; return counts; }, {});