学习Set数据结构,注意这里不是数据类型,而是数据结构。它是ES6中新的东西,并且很有用处。Set的数据结构是以数组的形式构建的。

Set的声明

let setArr = new Set(['js','技术','web','js']);
console.log(setArr);//Set {"js", "技术", "web"}
Set和Array 的区别是Set不允许内部有重复的值,如果有只显示一个,相当于去重。虽然Set很像数组,但是他不是数组。

Set值的增删查

追加add:

在使用Array的时候,可以用push进行追加值,那Set稍有不同,它用更语义化的add进行追加。
let setArr = new Set(['js','技术','web','js']);
console.log(setArr);//Set {"js", "技术", "web"}
 
setArr.add('前端职场');
console.log(setArr)

删除delete:

let setArr = new Set(['js','技术','web','js']);
console.log(setArr);//Set {"js", "技术", "web"}
 
setArr.add('前端职场');
console.log(setArr); //Set {"js", "技术", "web", "前端职场"}
 
setArr.delete('前端职场');
console.log(setArr); //Set {"js", "技术", "web"}

查找has:

用has进行值的查找,返回的是true或者false。
let setArr = new Set(['js','技术','web','js']);
console.log(setArr);//Set {"js", "技术", "web"}
 
console.log(setArr.has('js'));//true

清空clear:

let setArr = new Set(['jspang','技术胖','web','jspang']);
console.log(setArr);//Set {"jspang", "技术胖", "web"}
setArr.clear();
console.log(setArr);//元素被清空

set的循环

for…of…循环:

let setArr = new Set(['js','技术','web','js']);
for (let item of setArr){
    console.log(item);
}

size属性

size属性可以获得Set值的数量。
let setArr = new Set(['jspang','技术胖','web','jspang']);
for (let item of setArr){
    console.log(item);
}
 
console.log(setArr.size);

forEach循环

let setArr = new Set(['jspang','技术胖','web','jspang']);
setArr.forEach((value)=>console.log(value));

WeakSet的声明

let weakObj=new WeakSet();
let obj={a:'js',b:'技术'}
weakObj.add(obj);
console.log(weakObj);
这里需要注意的是,如果你直接在new 的时候就放入值,将报错。
WeakSet里边的值也是不允许重复的,我们来测试一下。
let weakObj=new WeakSet();
let obj={a:'js',b:'技术'}
let obj1=obj;
weakObj.add(obj);
weakObj.add(obj1);
console.log(weakObj);
总结:在实际开发中Set用的比较多,WeakSet用的并不多,但是他对传入值必须是对象作了很好的判断,我们灵活应用还是有一定的用处的。

Set和WeakSet数据结构的更多相关文章

  1. Set 和 WeakSet 数据结构

    Set 和 WeakSet 数据结构是ES6新增. 它与数组非常相似,但是Set数据结构的成员都是唯一的. 特别说明:Set 中只能添加一个NaN 一.Set 数据结构: var set = new ...

  2. ES6系列_11之Set和WeakSet数据结构

    一.Set 1.Set是什么? Set是ES6 提供的一种新的数据结构.类似于数组. 2.Set能解决什么问题 Set和Array 的区别是Set不允许内部有重复的值,如果有只显示一个,相当于去重. ...

  3. ES6 WeakSet数据结构 与Set十分相似

    它与Set十分相似,对象的值也不能是重复的,与Set不同点: .WeakSet成员只能够是对象. .作为WeakSet成员的对象都是弱引用,即垃圾回收机制不考虑WeakSet对该对象的引用,也就是说, ...

  4. ES6 之 Set数据结构和Map数据结构 Iterator和for...of循环

    ECMAScript 6 入门 Set数据结构 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. va ...

  5. ECMAScript 6之Set和Map数据结构

    Set 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. var s = new Set(); [2, ...

  6. es6学习笔记-set和map数据结构

    ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3 ...

  7. 10.Set 和 Map 数据结构

    Set 和 Map 数据结构 Set 和 Map 数据结构 Set 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来 ...

  8. ES6的新特性(12)——Set 和 Map 数据结构

    Set 和 Map 数据结构 Set 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. co ...

  9. es6的Set和Map数据结构

    Set 和 Map 数据结构 Set WeakSet Map WeakMap Set § ⇧ 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set ...

随机推荐

  1. map 的用法

    #include<iostream> #include<map> #include<string> #define s second #define f first ...

  2. 排序(I)

    NSSortDescriptor 排序 Person类 #import <Foundation/Foundation.h> @interface Person : NSObject @pr ...

  3. MVC中的Ajax与增删改查(一)

    自入手新项目以来,一直处于加班状态,博客也有两周没更,刚刚完成项目的两个模组,稍有喘息之机,写写关于项目中 的增删改查,这算是一个老生常谈的问题了,就连基本的教材书上都有.刚看书的时候,以为 没什么可 ...

  4. c++学习笔记(六)- vector使用和内存分配

    -----------------------------2019/01/15------------------------------- 复习了下迭代器,其实c++参考里讲的很清楚,主要需要辨析规 ...

  5. Log4j基础知识

    Log4J是Apache的一个开放源代码的项目.通过使用Log4J,程序员可以控制日志信息输送的目的地,包括控制台,文件,GUI组件和NT事件记录器,也可以控制每一条日志的输出格式,或通过定义每一条日 ...

  6. python添加新的模块

    添加新的模块可以把路径放到环境变量中 或者放到site-packages文件夹下

  7. svnrdump:E175000:SSL is not supported错误的解决

    参考博客:https://www.cnblogs.com/jkko123/p/6358461.html 参考博客:https://blog.csdn.net/w171066/article/detai ...

  8. golang学习笔记5 用bee工具创建项目 bee工具简介

    golang学习笔记5 用bee工具创建项目 bee工具简介 Bee 工具的使用 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/docs/instal ...

  9. AtCoder Beginner Contest 087 (ABC)

    A - Buying Sweets 题目链接:https://abc087.contest.atcoder.jp/tasks/abc087_a Time limit : 2sec / Memory l ...

  10. 编写一个JavaWeb项目

    基本流程:JSP文件显示页面,在前端页面输入赋值,使用form或href超链接传值到Servlet中方法,在Servlet方法中调用Dao层的类对象,将数据传到数据库中,并实现对数据库里的数据的增删改 ...