ES6新增的Set和WeakSet

(一)ES5新增的set可以理解成一种数据结构,也可以理解成一种值的集合,set结构中的数据是不允许有重复值的,set本身是一个构造函数,可以理解成一个类,使用的时候需要实例化,

写法如下:

let s = new set([1,2,3])
console.log(a)
//打印结果:{1,2,3}

或者:

let s = new set()
s.add(1)
s.add(2)
s.add(3)
console.log(s)
//打印结果:{1,2,3}

1. set的属性 size:

let s = new set([1,2,3])
s.size  //值为4

2.set的方法 delete(),clear(),has(),entries(),keys(),values(),forEach()

//删除set结构中的指定值
let a = new Set([1,2,3,4])
console.log( a.delete(1) )
console.log(a)
//打印结果:true
//打印结果:{2,3,4}


//清除set结构中的所有值
let b = new Set([1,2,3,4])
b.clear()
console.log(b)
//打印结果为{}

//判断set结构中是否含有指定值
let c = new Set([1,2,3,4])
console.log( c.has(1) )
//打印结果为 true

//返回一个带键值对的遍历器
let d = new Set(['a','b','c'])
console.log( d.entires() )
//打印结果是一个带键值对的遍历器,键值相同:SetIterator {["a", "a"], ["b", "b"], ["c", "c"]}


//返回键名的遍历器
let e = new Set(['a','b','c'])
console.log(e.keys())
//打印结果:SetIterator{'a','b','c'}

//返回键值的遍历器
let f = new Set(['a','b','c'])
console.log(f.values())
//打印结果:SetIterator{'a','b','c'}

//遍历每一个成员
let g = new Set(['a','b','c'])
g.forEach((key,value) => {
    console.log(key,value)
})
//打印结果:a,a    b,b   c,c

set有一个很受欢迎的用途,那就是数组去重:

let num = [1,2,2,3,3,4,5]
let s = new Set(num)    //因为set结构中不允许有重复项,会自动忽略相同的值,只保留一项,所以set实例后的s的值为{1,2,3,4,5}
let newNum = Array.from(s) //ES6数组的扩展特性
console.log(newNum)  //完成去重[1,2,3,4,5]

(二)WeakSet和Set有很多相同的地方,他们同样不能存储相同的项,不同的是WeakSet的参数的项必须是对象类型{age:'18'}

let s = new WeakSet([name:'张三',age:'18'])

WeakSet同样含有add(),has(),delete()方法,但是WeakSet不能循环遍历操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值