Разница отображенных массивов

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом лабе мы исследуем реализацию функции 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, чтобы улучшить свои навыки.