Давайте воспользуемся LeetCode 1051. Средство проверки высоты, чтобы продемонстрировать разницу между двумя разными подходами.
В моем решении я использовал глубокую копию для создания нового массива вместо ссылки на исходный массив. Если я использовал неглубокую копию для копирования массива высот, это вызовет проблему в этом случае. Проблема в том, что когда мы вызываем функцию sort() для копии, она также обновляет элементы высоты. Причина в том, что массив в JavaScript является ссылочным значением. Когда вы используете «=» в let copy = heights
, переменная копирования получает только ссылку на расположение исходного массива в памяти и фактически не создает новый экземпляр в памяти. Мы также называем это действие изменяемым действием.
Почему изменяемые данные плохи?
Проблема с LeetCode 1051. Height Checker - одна из причин.
Когда мы пытаемся изучить различия между текущими данными и данными, которые были изменены в текущие данные. неизменяемая структура данных играет здесь решающую роль. Неизменная структура данных также играет важную роль в современных веб-технологиях, таких как React.js и Redux.js.