资讯专栏INFORMATION COLUMN

初探ES6中的Set和weakSet

afishhhhh / 2728人阅读

摘要:对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。不能重复获取的值方法用来向一个对象的末尾添加一个指定的值。

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://www.ucloud.cn/yun/93836.html

相关文章

  • es6 SetWeakSet

    摘要:返回一个布尔值,表示该值是否为的成员。清除所有成员,没有返回值。上面代码中,方法返回的遍历器,同时包括键名和键值,所以每次输出一个数组,它的两个成员完全相等。因此,适合临时存放一组对象,以及存放跟对象绑定的信息。 Js大部分历史时期都只存在一种集合类型,也就是数组类型。数组在 JS 中的使用正如其他语言的数组一样,但缺少更多类型的集合导致数组也经常被当作队列与栈来使用。数组只使用了数值...

    marser 评论0 收藏0
  • 细说es6中的SetMap

    摘要:返回一个布尔值,表示该值是否为的成员。返回键名的遍历器返回键值的遍历器返回键值对的遍历器使用回调函数遍历每个成员需要特别指出的是,的遍历顺序就是插入顺序。该数组的所有成员,都会自动成为实例对象的成员。这意味着,数组的成员只能是对象。 1.Set ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构...

    Ryan_Li 评论0 收藏0
  • 带你入门 JavaScript ES6 (五) 集合

    摘要:一概述集合是引入的新的内置对象类型,其特点同数学意义的集合,即集合内所有元素不重复元素唯一。数组集合对比数组和集合,数组可以加入重复数据,而集合的所有元素是唯一的不允许重复。因此,适合临时存放一组对象,以及存放跟对象绑定的信息。 本文同步带你入门 带你入门 JavaScript ES6 (五) 集合,转载请注明出处。 前面我们学习了: for of 变量和扩展语法 块作用域变量和解构...

    BetaRabbit 评论0 收藏0
  • ES6 - WeakSet

    摘要:这几意味着,在初始化和调用的时候,都只能传入对象类型的元素。如果给方法传入非对象类型,会抛出错误。 在我们进入在WeakSet的使用之前,我们先来看一个用Set来存储对象引用的例子: let set = new Set(); let key = {}; set.add(key); key = null; console.log(set.size); // 1 console.log([...

    Jiavan 评论0 收藏0
  • 深入理解:ES6中的SetMap数据结构,Map与其它数据结构的互相转换

    摘要:学习笔记工作中常用到的语法只是简单提及和,今天有空于是写了这篇文章深入理解中的和数据结构,与其它数据结构的互相转换。的提供了新的数据结构。本身是一个构造函数,用来生成数据结构。 文中的内容主要是来自于阮一峰的《ES6标准入门》(第三版)。《学习ES6笔记──工作中常用到的ES6语法》只是简单提及Set和Map,今天有空于是写了这篇文章──《深入理解:ES6中的Set和Map数据结构,M...

    Cristalven 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<