Не понятно решение

Создайте функцию getRepeats с одним параметром. В этот параметр будет приходить массив данных.

Функция должна возвращать объект, в котором указано сколько раз каждое слово встречается в массиве

Обратите внимание, что счёт начинается не с нуля, а с единицы. Если вы встречаете слово в массиве в первый раз, значит надо записать, что слово встречается один раз, а не ноль.

Не понятна эта часть кода

acc[el]=(acc[el] ||0) + 1

Решение:

const getRepeats = arr=> arr.reduce((acc,el)=>{ acc[el]=(acc[el] ||0) + 1; return acc },{});

console.log(getRepeats(["Василий","Пётр","Иннокентий","Пётр","Иван","Василий"]));


Ответы (1 шт):

Автор решения: Igor

const getRepeats = arr => arr.reduce((acc, el) => {
  //acc[el] = (acc[el] || 0) + 1;
  // or
  /*
  if (!acc[el]) // have not seen this name yet, set count to zero
    acc[el] = 0;
  acc[el] += 1; // increase count by one
  */
  // or
  //acc[el] = (acc[el]? acc[el] : 0) + 1;
  // or
  //acc[el] = acc[el]? (acc[el] + 1) : 1;
  // or
  acc[el] = el in acc? (acc[el] + 1) : 1;
  return acc;
}, {});

console.log(getRepeats(["Василий", "Пётр", "Иннокентий", "Пётр", "Иван", "Василий"]));

→ Ссылка