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

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

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

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

Введение

В этом лабе мы исследуем реализацию функции differenceBy в JavaScript. Эта функция позволяет найти разницу между двумя массивами, применяя заданную функцию к каждому элементу обоих массивов. Мы узнаем, как использовать Set, Array.prototype.map() и Array.prototype.filter() для эффективного сравнения и фильтрации массивов по определенному критерию.


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") subgraph Lab Skills javascript/variables -.-> lab-28484{{"Разница отображенных массивов"}} javascript/data_types -.-> lab-28484{{"Разница отображенных массивов"}} javascript/arith_ops -.-> lab-28484{{"Разница отображенных массивов"}} javascript/comp_ops -.-> lab-28484{{"Разница отображенных массивов"}} javascript/higher_funcs -.-> lab-28484{{"Разница отображенных массивов"}} javascript/destr_assign -.-> lab-28484{{"Разница отображенных массивов"}} end

Функция для возврата разницы двух массивов с использованием отображения

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