前端面试题

判断两个 Set 是否相同

2019-04-10  本文已影响0人  千茉紫依

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完全一致。

上一篇下一篇

猜你喜欢

热点阅读