Set可以看做是增强型的数组,它内部的重复值会被自动剔除,而且Set中重复的判断标准是根据值,而不是根据引用地址,这一点对于重复对象判别非常友好。Set常用的方法有size、add、delete、has,与数组类似。
判断两个 Set 是否相同
方案一:
const isSameSet = (s1, s2) => {
if (s1.size !== s2.size) {
return false;
}
return [...s1].every(i => s2.has(i))
}
这里使用延展符...将Set转化为数组,然后使用数组的every函数来判别是否有重复,every函数对数组每个值执行传入的函数,若全部符合则返回true,否则返回false
方案二:
const isSameSet = (set1, set2) => {
let s = new Set([...set1, ...set2])
return s.size == set1.size && s.size == set2.size
}
由两个生成一个新的Set,如果两个Set相等,那么新Set的size必然与两个Set完全一致。
网友评论