Каким образом изменяется элемент в массиве?
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 } |
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, ссылка?
Дополнительно:
Это происходит из-за того, что переменная 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.
- Спасибо большое за ваш ответ, выручили!
Я так и предполагал - sul_evil, пожалуйста, обращайтесь ))
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для изменения элемента в массиве в PHP необходимо знать ключ (индекс) этого элемента. Далее можно просто присвоить новое значение этому элементу по его ключу.
Например, у нас есть массив $arr:
$arr = array("apple", "banana", "cherry");
Чтобы изменить элемент с индексом 1 (в данном случае "banana") на новое значение, например "orange", можно сделать следующее:
$arr[1] = "orange";
После выполнения этого кода, элемент с индексом 1 в массиве $arr будет изменен на "orange".
Если вам неизвестен индекс элемента, но вы знаете его значение, то можно воспользоваться функцией array_search() для поиска индекса элемента по его значению. Например, если мы хотим найти индекс элемента "banana" в массиве $arr и изменить его на "orange", то код будет выглядеть следующим образом:
$key = array_search("banana", $arr); if ($key !== false) { $arr[$key] = "orange"; }
Таким образом, вы сможете легко изменить элемент в массиве в PHP, зная его индекс или значение.