初探ES6中的Set和weakSet

发布时间:2019-08-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了初探ES6中的Set和weakSet脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。(不能重复)
const set1=new Set([1,2,3,4,5,6]);
console.LOG(set1); //Set { 1, 2, 3, 4, 5, 6 }
获取set的值
console.log([...set1])  //[ 1, 2, 3, 4, 5, 6 ]
set1.foreach((x)=>{
    console.log(x)  //1 2 3 4 5 6
})
for(let a of set1){
    console.log(a)  //1 2 3 4 5 6
}
add(value) 方法用来向一个 Set 对象的末尾添加一个指定的值。
let mySet=new Set();
mySet.add(1);
mySet.add(2).add(3); //支持链式添加
console.log(mySet) //Set { 1, 2, 3 }
clear()用来清空一个Set对象中的所有元素 返回undefined
let clearSet=new Set([9,8])
console.log(clearSet)   //Set { 9, 8 }
console.log(clearSet.clear())  //undefined
delete(value) 可以从一个set对象中删除指定的元素 ,并返回true
let delSet=new Set(['hello','word'])
console.log(delSet.delete('hello'));   //true 
console.log(delSet.delete('hi'));   //false
console.log(delSet)  //Set { 'word' }
has(value) 返回一个布尔值来指示对应的值value是否存在Set对象中
let hasSet=new Set(['hi','word'])
console.log(hasSet.has('hi')); //true
console.log(hasSet.has('hello')); //false
forEach(callback) 方法根据集合中元素的顺序,对每个元素都执行提供的 callback 函数一次。
let forSet=new Set([100,200,300]);
forSet.forEach(x=>{
    console.log(x)  //100 200 300 
})
entries()转换成数组迭代器
let entries=new Set(['foobar','baz']);
let setIter=entries.entries();
console.log(setIter.next()) //{ value: [ 'foobar', 'foobar' ], done: false }
console.log(setIter.next()) //{ value: [ 'baz', 'baz' ], done: false }
console.log(setIter.next()) //{ value: undefined, done: true }  done==true 即结束
values() 返回一个 Iterator对象
let value=new Set(['vue','react']);
let setValue=value.values();
console.log(setValue.next());  //{ value: 'vue', done: false }
console.log(setValue.next());  //{ value: 'react', done: false }
console.log(setValue.next());  //{ value: undefined, done: true }
size 返回set对象的长度,类似数组length
let size=new Set([1,2,3,{name:'1'}]);
console.log(size)  //Set { 1, 2, 3, { name: '1' } }
console.log(size.size); //4

WeakSet 对象是一些对象值的集合, 并且其中的每个对象值都只能出现一次.

它和 Set 对象的区别有两点:
WeakSet 对象中只能存放对象引用, 不能存放值, 而 Set 对象都可以.
WeakSet 对象中存储的对象值都是被弱引用的, 如果没有其他的变量或属性引用这个对象值, 则这个对象值会被当成垃圾回收掉. 正因为这样, WeakSet 对象是无法被枚举的, 没有办法拿到它包含的所有元素.
使用weakSet
VAR ws = new WeakSet();
var obj={name:'obj'};
add(value)在WeakSet对象后面追加一个对象
ws.add(obj);
has(value)检查是否存在该对象
console.log(ws.has(obj)) //true
delete(value)删除weakSet种的对象
ws.delete(obj);
console.log(ws.has(obj)) //false

每天进步一点,希望大家喜欢,也希望喜欢的朋友点个赞,后续继续更新...

脚本宝典总结

以上是脚本宝典为你收集整理的初探ES6中的Set和weakSet全部内容,希望文章能够帮你解决初探ES6中的Set和weakSet所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。