ES6:Set

了解Set

ES6提供了数据结构Set。类似于数组,但是没有重复值。Set本身是一个构造函数,用来生成Set数据结构const s = new Set();

[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));for(let i of s ) { console.log(i); //2 3 4 5 }Set可以接受一个数组(或者类数组对象)作为参数,用来初始化var set = new Set([1, 2, 3, 4, 4]);

[...set]; // [1, 2, 3, 4]可用于数组去重[...new Set(array)]

Array.from()方法可以将Set结构转换为数组Array.from(new

Set(array))向Set加入值时,不会发生类型转换(类似于精确相等===),但是要注意在Set里NaN是等于自身的。另外两个对象总是不相等的。let set = new Set();let a = NaN;let b = NaN;

set.add(a);

set.add(b);

set; //{NaN} 只能加入一个,说明Set内部两个NaN是相等的

Set实例的属性和方法属性:Set.prototype.constructor:构造函数,默认就是Set函数

Set.prototype.size:返回实例的成员总数

操作方法(方法的具体实现见:我对JS集合的简单学习):add(value):添加一个值,返回Set结构本身

delete(value):删除某个值,返回布尔值

has(value):返回布尔值,表示是否是成员

clear():清除所有成员,无返回值s.add(1).add(2).add(2); //链式写法s.size(); //2s.has(3); //falses.delete(2);

s.has(2); //false遍历方法keys():返回键名的遍历器(什么是遍历器?Iterator)

values():返回键值的遍历器

entries():返回键值对的遍历器

forEach():使用回调函数遍历每个成员这里要注意Set的键名和键值是同一个值,所以key()和values()行为是一致的。let set = new Set(['red', 'green', 'no']);for(let item of set.keys()) { console.log(item); //red green no}for(let item of set.values()) { console.log(item); //red green no}for(let item of set.entries()) { console.log(item); //['red': 'red'] ['green': 'green'] ['no': 'no']}//对每个成员执行某种操作,参数依次为键值、键名、集合本身new Set([1, 2, 3]).forEach((value, key) => console.log(value * 2)); //2 4 6

操作集合let a = new Set([1, 2, 3]);let b = new Set([4, 3, 2]);//并集let union = new Set([...a, ...b]); //{1, 2, 3, 4}//交集let intersect = new Set([...a].filter(x => b.has(x))); //{2, 3}//差集let difference = new Set([...a].filter(x => !b.has(x))); //{1}号外:扩展运算符(...)内部使用for...of循环,所以应该知道for of是干嘛的吧

数组的map()和filter()可用于Setlet set = new Set([1, 2, 3]);set = new Set([...set].map(x => x * 2)); //set: {2, 4, 6}let set = new Set([1, 2, 3, 4, 5]);set = new Set([...set].filter(x => (x % 2) == 0)); //set {2, 4}

php 数据结构set,ES6的Set数据结构是什么相关推荐

  1. python数据结构推荐书-自己想学数据结构,有大佬能推荐一下看什么书吗?

    数据结构就是你的工具箱,这些工具箱帮你把同类的信息装到了一起,同时还提供给你操作这些信息的各种便捷方法. 数据结构是计算机中的重中之重,而且数据结构一般和算法结合比较紧密,加上,数据结构和算法往往是算 ...

  2. 二、考研数据结构笔记——绪论(理解数据结构,算法,时间复杂度计算做题技巧)

    一.数据结构基本概念 1.数据:数据是信息的载体.客观事物的一种表现形式.万事万物都能用数据表示出来. 2.数据元素:数据元素是数据的基本单位,一个数据元素有若干个数据项组成 3.数据项:构成数据元素 ...

  3. 数据结构视频教程 -《[猎豹网校]数据结构与算法_C#语言》

    整个视频打包下载地址:史上最全的数据结构视频教程系列分享之<[猎豹网校]数据结构与算法_C#语言>,转载请保留出处和链接! 更多优秀资源请访问:我是码农 在猎豹网校授课的基本都是在IT行业 ...

  4. 【自学笔记】尚硅谷数据结构与算法Chapter 1 数据结构与算法概述

    Chapter 1 数据结构与算法概述 文章目录 Chapter 1 数据结构与算法概述 1.1.1 数据结构和算法的关系 1.2.1 线性结构 1.2.2 非线性结构 尚硅谷数据结构B站学习视频地址 ...

  5. 【数据结构与算法 - 数据结构基础】什么是数据结构?

    [数据结构与算法 - 数据结构基础]什么是数据结构? 文章目录 [数据结构与算法 - 数据结构基础]什么是数据结构? 1 数据结构包含的三个方面 1.1 数据的逻辑结构 1.1.1 线性结构 数组[A ...

  6. 《大话数据结构》1、2数据结构、算法

    大话数据结构 大话设计模式 head first设计模式 Java核心技术 卷1 深入理解Java虚拟机(JVM高级特性与最佳实践) 图解HTTP 大话数据结构 数据结构介绍, 算法推导大O阶的方法, ...

  7. 硬核资源!Redis 五种数据结构以及三种高级数据结构解析(详解)

    上一篇分享的是<深入理解JVM>,这篇给大家分享<Redis 五种数据结构以及三种高级数据结构解析>. 前言 在 Redis 最重要最基础就属 它丰富的数据结构了,Redis ...

  8. linux数据结构和uthash,UThash 的数据结构

    简介: 由于项目的需要,需要在一个嵌入式平台(用C语言)上用到hash map这个数据结构.于是搜索到开源的Uthash.Uthash 是一个C语言开发的hash map工具.其特点是用宏定义了所需要 ...

  9. java数据结构停车场管理问题_数据结构——停车场问题

    实验三 停车场模拟管理程序的设计与实现 本实验的目的是进一步理解栈和队列的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力. 一.问题描述 设停车场只有一个可停放几辆汽车的狭长通道,且 ...

  10. ES6,新增数据结构Set的用法

    ES6 提供了新的数据结构 Set. 特性 似于数组,但它的一大特性就是所有元素都是唯一的,没有重复. 我们可以利用这一唯一特性进行数组的去重工作. 单一数组的去重. let set6 = new S ...

最新文章

  1. 如何利用 C# 实现 K-D Tree 结构?
  2. 智能车竞赛视觉AI组总结 西南科技大学 – 西科二队
  3. NanoPi NEO Air使用十五:移植RTL8723BU驱动
  4. 【新星计划】MATLAB plot绘制图像
  5. python财务预算分析_财码Python管理会计小实验—营运管理之多维度盈利能力分析...
  6. AQS.accquire
  7. 剑指 Offer II 014. 字符串中的变位词
  8. 服务器标配 SSH 协议,你了解多少?
  9. 在线教育行业内容营销洞察白皮书(2021年版)
  10. WCF、WebAPI、WebService之间的区别
  11. Heron 数据模型,API和组件介绍
  12. 43个PSD to XHTML,CSS教程
  13. linux 分区 备份软件下载,硬盘分区备份(Image For Windows)
  14. MySQL中的datetime与timestamp比较
  15. linux更新硬件时钟,Linux内核“11分钟模式”可以做的最大的硬件时钟更新是什么?...
  16. Ubuntu 16.04下安装激活pycharm 2018.3版本
  17. ros系列—解决文件改名导致节点无法启动问题及ros::NodeHandle nh与nh(“~“)的理解
  18. 微信上卖菜的小程序怎么做?
  19. sqlplus登录缓慢的解决
  20. FreeMarker导出word遇到的坑

热门文章

  1. OpenGL ES着色器语言之变量和数据类型(一)(官方文档第四章)和varying,uniform,attribute修饰范围...
  2. 【转】android题目
  3. 20200624每日一句
  4. 字符串分隔为二维数组,二级和三级指针的应用案例
  5. just show up失败让我们成长
  6. 181004有道扇贝每日一句
  7. C/C++ C# unity经常使用的一些快捷键
  8. Atitit 数据库核心技术index索引技术 btree hash lsm fulltxt目录1.1. HASH
  9. atitit 面试问题表 侧重于项目和业务描述方面.v2 良好的标准:: 1.回答问题比较流畅,较少出现停顿现象,较少犹豫 2.回答有条理清晰 不杂乱 3.回答较为丰富内容 4.精神状态紧张
  10. Atitit easyui翻页组件与vue的集成解决方案attilax总结