简介
在本实验中,我们将深入探讨对称差集的概念,以及如何使用 symmetricDifferenceBy()
函数在 JavaScript 中实现它。我们将探索如何在对两个数组的每个元素应用给定函数之后,使用此函数来找出这两个数组之间的唯一值。本实验旨在帮助你更好地理解这个强大的 JavaScript 方法,以及它如何在你自己的项目中使用。
This tutorial is from open-source community. Access the source code
💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版
在本实验中,我们将深入探讨对称差集的概念,以及如何使用 symmetricDifferenceBy()
函数在 JavaScript 中实现它。我们将探索如何在对两个数组的每个元素应用给定函数之后,使用此函数来找出这两个数组之间的唯一值。本实验旨在帮助你更好地理解这个强大的 JavaScript 方法,以及它如何在你自己的项目中使用。
要开始编码,请打开终端/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 中练习更多实验来提升你的技能。