JavaScript 中获取两集合之间的差异
JavaScript 中要获得两个集合之间的差异:
-
将第一个
Set
转换为 Array。 -
使用
filter()
方法迭代数组。 -
使用
has()
方法检查每个元素是否不包含在第二个 Set 中。 -
将数组转换回
Set
。
function getDifference(setA, setB) {
return new Set(
[...setA].filter(element => !setB.has(element))
);
}
const set1 = new Set(['a', 'b', 'c']);
const set2 = new Set(['a', 'b']);
console.log(getDifference(set1, set2)); // 👉️ {'c'}
我们使用扩展语法 ...
将第一个 Set 转换为数组,因此我们可以对其调用 Array.filter
方法。
我们传递给 filter 方法的函数被数组中的每个元素调用。
filter
方法返回一个包含元素的新数组,回调函数为其返回真值。
在每次迭代中,我们通过否定 Set.has() 方法的结果来检查该元素是否不包含在第二个 Set 中。
如果元素包含在 Set 中,则 has() 方法返回 true,否则返回 false。
但是
,这不会返回 Set 之间的完整差异,因为我们只检查第一个 Set 中的元素是否不包含在第二个 Set 中。 我们没有检查第二个 Set 中的元素是否不包含在第一个中。
function getDifference(setA, setB) {
return new Set(
[...setA].filter(element => !setB.has(element))
);
}
const set1 = new Set(['a']);
const set2 = new Set(['a', 'b', 'c']);
console.log(getDifference(set1, set2)); // 👉️ {}
在上面的例子中,我们得到了一个空的 Set 来表示差异,而应该是一个包含 {'b', 'c'}
的 Set。
我们只迭代了第一个 Set,它有 1 个元素,所以我们没有得到完全的不同。
要解决这个问题,我们需要调用两次
getDifference
方法,然后合并结果。
function getDifference(setA, setB) {
return new Set(
[...setA].filter(element => !setB.has(element))
);
}
const set1 = new Set(['a']);
const set2 = new Set(['a', 'b', 'c']);
const difference = new Set([
...getDifference(set1, set2),
...getDifference(set2, set1),
]);
console.log(difference); // 👉️ {'b', 'c'}
这是我们为使它正常工作所做的工作:
- 遍历第一个 Set 的元素,只返回第二个 Set 中不包含的元素。
- 迭代第二个 Set 的元素并仅返回第一个中不包含的元素。
- 将结果组合成第三组。
现在,我们的示例包含了两个 Set 对象之间的完整差异。
相关文章
使用 CSS 和 JavaScript 制作文本闪烁
发布时间:2023/04/28 浏览次数:146 分类:CSS
-
本文提供了使用 CSS、JavaScript 和 jQuery 使文本闪烁的详细说明。
在 PHP 变量中存储 Div Id 并将其传递给 JavaScript
发布时间:2023/03/29 浏览次数:69 分类:PHP
-
本文教导将 div id 存储在 PHP 变量中并将其传递给 JavaScript 代码。
在 JavaScript 中从字符串中获取第一个字符
发布时间:2023/03/24 浏览次数:93 分类:JavaScript
-
在本文中,我们将看到如何使用 JavaScript 中的内置方法获取字符串的第一个字符。
在 JavaScript 中获取字符串的最后一个字符
发布时间:2023/03/24 浏览次数:141 分类:JavaScript
-
本教程展示了在 javascript 中获取字符串最后一个字符的方法