Диапазон элементов, обрабатываемых методомforEach()
, устанавливается до первого вызова функцииcallback
.
Элементы, добавленные в массив после начала выполнения методаforEach()
, не будут посещены функциейcallback
.
Если существующие элементы массива изменятся, значения, переданные в функциюcallback
, будут значениями на тот момент времени, когда методforEach()
посетит их;
удалённые элементы посещены не будут.
Если уже посещённые элементы удаляются во время итерации (например, с помощьюshift()
), последующие элементы будут пропущены. (Смотри пример ниже)
Warning: Concurrent modification of the kind described in the previous paragraph frequently leads to hard-to-understand code and is generally to be avoided (except in special cases).
const getLeaders = arr => arr.reduceRight((a, c) => ((c > a.s) && a.r.unshift(c), a.s += c, a), { r: [], s: 0 }).r;