简介
在本实验中,我们将探索一个 JavaScript 函数,该函数根据提供的比较函数过滤非唯一数组值。通过使用 Array.prototype.filter() 和 Array.prototype.every(),我们将创建一个新数组,该数组仅包含基于比较函数的唯一值。本实验旨在加深你对 JavaScript 数组方法的理解,以及如何使用它们来操作数据。
在本实验中,我们将探索一个 JavaScript 函数,该函数根据提供的比较函数过滤非唯一数组值。通过使用 Array.prototype.filter() 和 Array.prototype.every(),我们将创建一个新数组,该数组仅包含基于比较函数的唯一值。本实验旨在加深你对 JavaScript 数组方法的理解,以及如何使用它们来操作数据。
要开始练习编码,请打开终端/SSH 并输入 node。
这段代码根据提供的比较函数从数组中过滤掉非唯一值。实现此目的的步骤如下:
Array.prototype.filter() 和 Array.prototype.every() 创建一个新数组,该数组仅包含基于比较函数 fn 的唯一值。filterNonUniqueBy 实现上述步骤并返回唯一值数组。const filterNonUniqueBy = (arr, fn) =>
arr.filter((v, i) => arr.every((x, j) => (i === j) === fn(v, x, i, j)));
以下是如何使用此函数的示例:
filterNonUniqueBy(
[
{ id: 0, value: "a" },
{ id: 1, value: "b" },
{ id: 2, value: "c" },
{ id: 1, value: "d" },
{ id: 0, value: "e" }
],
(a, b) => a.id === b.id
); // [ { id: 2, value: 'c' } ]
这段代码简洁、清晰且连贯,应该能按预期工作。
恭喜你!你已经完成了“基于函数过滤数组中的非唯一值”实验。你可以在 LabEx 中练习更多实验来提升你的技能。