const refact = (intervals) => {
if(intervals.length < 2){
return intervals
}
intervals.sort((a, b) => a[0] - b[0])
let result = [intervals[0]]
for(let interval of intervals){
let last = result[result.length - 1]
if(interval[0] <= last[1]){
last[1] = Math.max(last[1], interval[1])
} else {
result.push(interval)
}
}
return result
}
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
.