Задача:
Посчитать количество повторяющихся элементов массива. Результат представить в виде объекта:
Решение:
(1) Вариант
function count(array){
var names = {};
array.forEach(item => {
names[item] = (names[item] || 0) + 1;
});
return names;
}
count(['a', 'a', 'b', 'b', 'b']);
(2) Вариант
function count(array){
return array.reduce(function (stack, value) {
return stack[value] ? stack[value]++ : stack[value] = 1, stack;
}, {});
}
(3) Вариант
var uniq = ['a', 'a', 'b', 'b', 'b'].map((name) => {
return {count: 1, name: name}
})
.reduce((a, b) => {
a[b.name] = (a[b.name] || 0) + b.count
return a
}, {})