简介
在本实验中,我们将深入探讨对称差集的概念,以及如何使用 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 中练习更多实验来提升你的技能。