Код Senior Реализация с нуля обновлено
Применение различий к списку
Условие
reconcile(oldKeys, newKeys) возвращает список операций: { type: 'remove', key }, { type: 'insert', key, index }, { type: 'move', key, index }. Элементы сопоставляются по ключу.
Что проверяют тесты
без изменений
удаление
вставка
перестановка
вставка в начало
смешанный случай
Как подойти
Упрощённая версия согласования списков в React. Главная идея - ключи: без них единственная стратегия это сравнение по позиции, и любая вставка в начало приводит к перерисовке всего хвоста. Модель current, изменяемая по ходу, нужна, чтобы индексы операций были корректны на момент применения, а не относительно исходного массива.
Подсказки: 3
- Сначала убери то, чего больше нет - дальше индексы считать проще.
- Веди модель текущего порядка и применяй к ней собственные операции.
- Элемент на своём месте трогать не нужно.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.