Симметрическая разность отображенного массива

Beginner

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

Введение

В этом практическом занятии мы рассмотрим концепцию симметрической разности и то, как ее можно реализовать на JavaScript с использованием функции symmetricDifferenceBy(). Мы изучим, как эта функция может быть использована для нахождения уникальных значений между двумя массивами после применения заданной функции к каждому элементу обоих массивов. Это практическое занятие предназначено для того, чтобы помочь вам лучше понять этот мощный метод JavaScript и то, как его можно использовать в своих собственных проектах.

Симметрическая разность отображенного массива

Для начала работы с кодом откройте Терминал/SSH и введите node.

Эта функция возвращает симметрическую разность между двумя массивами, после применения заданной функции к каждому элементу обоих массивов. Вот, как это работает:

  • Создайте Set из каждого массива, чтобы получить уникальные значения каждого из них после применения fn к ним.
  • Используйте Array.prototype.filter() для каждого из них, чтобы оставить только значения, не содержащиеся в другом.

Вот код для функции symmetricDifferenceBy:

const symmetricDifferenceBy = (a, b, fn) => {
  const sA = new Set(a.map((v) => fn(v))),
    sB = new Set(b.map((v) => fn(v)));
  return [
    ...a.filter((x) => !sB.has(fn(x))),
    ...b.filter((x) => !sA.has(fn(x)))
  ];
};

Вы можете использовать symmetricDifferenceBy так:

symmetricDifferenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); // [ 1.2, 3.4 ]
symmetricDifferenceBy(
  [{ id: 1 }, { id: 2 }, { id: 3 }],
  [{ id: 1 }, { id: 2 }, { id: 4 }],
  (i) => i.id
);
// [{ id: 3 }, { id: 4 }]

Резюме

Поздравляем! Вы завершили практическое занятие по симметрической разности отображенного массива. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.