Filter сохраняет элементы, для которых предикат истинен, и возвращает новый массив. В этом случае остаются все товары, чей id отличается от удаляемого; порядок сохраняется.
Почему filter подходит для удаления выбранного элемента?
Filter сохраняет элементы, для которых предикат истинен, и возвращает новый массив. В этом случае остаются все товары, чей id отличается от удаляемого; порядок сохраняется.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Есть неизменяемый список товаров с уникальными id. По клику нужно получить новый список без товара с selectedId, не переставляя остальные элементы. Объясните выражение items.filter(item => item.id !== selectedId).
Ответ
Filter сохраняет элементы, для которых предикат истинен, и возвращает новый массив. В этом случае остаются все товары, чей id отличается от удаляемого; порядок сохраняется.
Для [{id:1},{id:2},{id:3}] и selectedId=2 получится [{id:1},{id:3}]. Если id не найден, возвращается новый массив с теми же элементами. Это поверхностное копирование: объекты внутри остаются теми же ссылками. Filter удалит все совпавшие id, поэтому требование уникальности важно, если ожидается удаление ровно одного товара.