映射数组的对称差集

JavaScriptJavaScriptBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将深入探讨对称差集的概念,以及如何使用 symmetricDifferenceBy() 函数在 JavaScript 中实现它。我们将探索如何在对两个数组的每个元素应用给定函数之后,使用此函数来找出这两个数组之间的唯一值。本实验旨在帮助你更好地理解这个强大的 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 之后获取每个数组的唯一值。
  • 对每个 Set 使用 Array.prototype.filter(),只保留另一个 Set 中不包含的值。

以下是 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 中练习更多实验来提升你的技能。

您可能感兴趣的其他 JavaScript 教程