Это происходит из-за того, что переменная last содержит ссылку на последний элемент массива result
. В JavaScript массивы - это объекты, а при обращении к элементам массива вы получаете доступ к самим объектам, а не их копиям.
Когда вы выполняете let last = result[result.length - 1]
, last теперь указывает на тот же самый объект, что и последний элемент result.
Таким образом, изменение last[1]
фактически изменяет значение в result
, потому что last
и result[result.length - 1]
ссылаются на один и тот же объект в памяти.
Это происходит здесь: last[1] = Math.max(last[1], interval[1])
, где обновляется второй элемент последнего интервала в массиве result
.