Задать вопрос
@sul_evil

Каким образом изменяется элемент в массиве?

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
}


Это функция которая объединяет интервалы при их "пересечении"
Не понимаю, каким образом last меняет элемент в массиве result, ссылка?
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
NikFaraday
@NikFaraday
Student full-stack Developer
Это происходит из-за того, что переменная 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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы