Удаление из первого массива всех элементов, присутствующих во втором

Создайте Set исключаемых значений и отфильтруйте первый массив. Порядок и повторения оставшихся элементов сохранятся, все совпадения со вторым массивом исчезнут.

Короткий ответ

Что ответить на собеседовании

Создайте Set исключаемых значений и отфильтруйте первый массив. Порядок и повторения оставшихся элементов сохранятся, все совпадения со вторым массивом исчезнут.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо реализовать функцию, которая принимает два массивa и из первого удаляет все элементы, которые встречаются во втором массиве, при этом сохраняет порядок оставшихся элементов.

// Примеры:
console.log(function([0, 2, 2, 2, 4], [2]));        // [0, 4]
console.log(function([1, 2, 2], [1]));              // [2, 2]
console.log(function([0, 2, 3], [1, 2]));           // [0, 3]

Ответ

Создайте Set исключаемых значений и отфильтруйте первый массив. Порядок и повторения оставшихся элементов сохранятся, все совпадения со вторым массивом исчезнут.

function subtract(first, second) {
  const excluded = new Set(second);
  return first.filter(value => !excluded.has(value));
}
subtract([1, 2, 2], [1]); // [2, 2]

В исходных примерах вместо слова function должен быть вызов именованной функции. Решение возвращает новый массив и не меняет first. Set сравнивает объекты по ссылке; для чисел из условия это не создаёт неоднозначности. Среднее время O(n + m), дополнительная память для множества O(m).

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее