Задача:

Посчитать количество повторяющихся элементов массива. Результат представить в виде объекта:

Решение:

(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
}, {})

results matching ""

    No results matching ""