Map对象,Set对象使用(2)

今天重点见一下Set

Set 在我印象里它主要就是去重,Set 是一个值的集合,这个集合中所有的值仅出现一次

Set 属性size:和Map的size一样,返回成员的总数

Set的方法:

  • Set.prototype.add(value):添加某个值,返回 Set 结构本身。
  • Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
  • Set.prototype.clear():清除所有成员,没有返回值。
let set = new Set();
set.add(1);set.add(1);set.add(2);
set.has(1);//true
set.has(2);//true
set.add({x:2});

set.add({x:1});
set.add(function(){});
set.add([]);
set.has(2)//true

console.log(set.size)
set.delete(1);
set.forEach(point =>{
    if(point.x<5){
        set.delete(point)
    }
})
console.log(set.size)//3

set.clear();
console.log(set.size)//0

Set里面的很多方法和Map是一样的(包括下面的)。同样对象,函数,数组,都是唯一的地址,

Set含有has判断特殊值

+0,-0是恒定的,还有undefned与undefined,他俩也是不重复的,而NaN 与 NaN 是不恒等,Set会认为他俩相等

Set的遍历方法:

  • Set.prototype.keys():返回键名的遍历器。
  • Set.prototype.values():返回键值的遍历器。
  • Set.prototype.entries():返回所有成员的遍历器。
  • Set.prototype.forEach():遍历 Set的所有成员。
const set = new Set(['a', 'b', 'c'])
​
for (let item of set.keys()) {
  console.log(item)
}
// a
// b
// c
for (let item of set.values()) {
  console.log(item)
}
// a
// b
// c
for (let item of set.entries()) {
  console.log(item)
}
// ["a", "a"]
// ["b", "b"]
// ["c", "c"]
// 直接遍历set实例,等同于遍历set实例的values方法
for (let i of set) {
  console.log(i)
}
// a
// b
// c
​
set.forEach((value, key) => console.log(key + ' : ' + value))
​
// a: a
// b: b
// c: c

最后对比一下他俩的区别

Set主要还是去重,值唯一,

Map主要是以键值对的形式存在,类似于json,但包含所有数据类型

扫描二维码关注公众号,回复: 6807083 查看本文章
 

猜你喜欢

转载自www.cnblogs.com/zhaozhenghao/p/11200036.html