{...acc, [review]: count + 1}
Здесь он распространяет acc
и для текущего элемента добавляет 1
к предыдущему счету,
[1,3,3]
Например, когда вы l oop над этим массивом на первом элемент т.е. 1
groupBy вернет объект наподобие
{ 1: 1 }
Теперь на второй итерации текущий элемент равен 3
, поэтому groupBy распространит предыдущий объект и, поскольку 3
didn ' t появился раньше, поэтому count = 0
, возвращаемое значение groupBy будет
{ 1: 1, 3: 1}
Теперь на третьей итерации текущий элемент равен 3
, поэтому groupBy распространит предыдущий возвращенный объект и для ключа 3
он добавляет 1
, поэтому возвращает
{ 1: 1, 3: 2}
Простая версия может выглядеть примерно так:
const reviews = [4.5, 4.0, 5.0, 2.0, 1.0, 5.0, 3.0, 4.0, 1.0, 5.0, 4.5, 3.0, 2.5, 2.0];
const countGroupedByReview = reviews.reduce(groupBy, {});
function groupBy(acc, review) {
acc[review] = acc[review] || 0;
acc[review]++
return acc
}
console.log(countGroupedByReview)