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
每天进步一点,希望大家喜欢,也希望喜欢的朋友点个赞,后续继续更新...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。