Введение
В этом лабе мы исследуем реализацию функции differenceBy в JavaScript. Эта функция позволяет найти разницу между двумя массивами, применяя заданную функцию к каждому элементу обоих массивов. Мы узнаем, как использовать Set, Array.prototype.map() и Array.prototype.filter() для эффективного сравнения и фильтрации массивов по определенному критерию.
Функция для возврата разницы двух массивов с использованием отображения
Для начала работы с кодом откройте Терминал/SSH и введите node.
Эта функция принимает два массива и применяет заданную функцию к каждому элементу обоих массивов, чтобы вернуть их разницу.
Для этого:
- Создайте
Set, применяя функцию (fn) к каждому элементу второго массива (b). - Используйте
Array.prototype.map(), чтобы применить функцию (fn) к каждому элементу первого массива (a). - Используйте
Array.prototype.filter()в сочетании с функцией (fn) для первого массива (a), чтобы оставить только значения, не содержащиеся во втором массиве (b), используяSet.prototype.has().
Вот код функции:
const differenceBy = (a, b, fn) => {
const s = new Set(b.map(fn));
return a.map(fn).filter((el) => !s.has(el));
};
Вот несколько примеров использования функции:
differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); // [1]
differenceBy([{ x: 2 }, { x: 1 }], [{ x: 1 }], (v) => v.x); // [2]
Резюме
Поздравляем! Вы завершили лабу по разнице отображенных массивов. Вы можете практиковаться в более лабах в LabEx, чтобы улучшить свои навыки.