Создайте 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).