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

JavaScriptJavaScriptBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") javascript/AdvancedConceptsGroup -.-> javascript/destr_assign("Destructuring Assignment") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28487{{"Симметрическая разность отображенного массива"}} javascript/data_types -.-> lab-28487{{"Симметрическая разность отображенного массива"}} javascript/arith_ops -.-> lab-28487{{"Симметрическая разность отображенного массива"}} javascript/comp_ops -.-> lab-28487{{"Симметрическая разность отображенного массива"}} javascript/higher_funcs -.-> lab-28487{{"Симметрическая разность отображенного массива"}} javascript/destr_assign -.-> lab-28487{{"Симметрическая разность отображенного массива"}} javascript/spread_rest -.-> lab-28487{{"Симметрическая разность отображенного массива"}} end

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

Для начала работы с кодом откройте Терминал/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, чтобы улучшить свои навыки.