初探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

天天提高一点,愿望人人喜好,也愿望喜好的朋侪点个赞,后续继承更新…

    原文作者:仅此而已
    原文地址: https://segmentfault.com/a/1190000014090011
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞