let ranges = [[125184, 125259], [125264, 125274], [125278, 125280]];
console.log(
ranges.reduce((count, [from, to]) => { // count gets 0 initially
console.log('count->', count, 'from->', from, 'to->', to)
return count + (to - from);
}, 0) // passing initial value to count
);
Итак, изначально count
получает 0 в качестве значения по умолчанию, которое вы передали.После этого начальный счетчик вызовов будет содержать все, что возвращает функция (см. Журнал внутри .reduce()
).
Массив, для которого вы вызываете reduce()
, представляет собой array
, содержащий array
длины два.Итак, второй параметр - это массив длины два ([from, to]
), потому что .reduce()
будет итерировать по нему один за другим и получать эти внутренние массивы.Теперь эти массивы будут деструктурированы с использованием array destructuring assgnment
и будут собраны в переменные from
и to
.
Итак, на первой итерации вы добавляете разность внутреннего массива (to - from)
к 0 и возвращаете его.Для второй итерации все, что вы вернули из first (75), будет значением переменной count
и т. Д.
Подробнее о .reduce()
можно прочитать здесь .