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 方法的函数被数组中的每个元素调用。
在每次迭代中,我们通过否定 Set.has() 方法的结果来检查该元素是否不包含在第二个 Set 中。
如果元素包含在 Set 中,则 has() 方法返回 true,否则返回 false。
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 个元素,所以我们没有得到完全的不同。
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 对象之间的完整差异。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。