Неизменяемые операции над списком
Условие
createList(items): методы add, removeAt, updateAt, move - каждый возвращает НОВЫЙ список, исходный не меняется. Нетронутые элементы остаются теми же по ссылке.
Что проверяют тесты
добавляет
удаляет
обновляет элемент
нетронутые элементы те же по ссылке
перемещает
цепочка вызовов
Как подойти
Неизменяемый список с цепочкой вызовов. Главное требование - нетронутые элементы остаются теми же по ссылке: именно это позволяет memo-компонентам строк не перерисовываться при изменении одной строки. Глубокое копирование всего списка формально даёт правильный результат, но убивает всю оптимизацию ниже по дереву - и это ровно тот ответ, который отличает понимание от заучивания.
Подсказки: 3
- Каждый метод возвращает новую обёртку вокруг нового массива.
- Меняем только затронутый элемент - остальные переиспользуем по ссылке.
- splice мутирует, поэтому move работает с копией.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.