首页 > web前端 > js教程 > 正文

ES6的Set数据结构是什么

一个新手
发布: 2017-09-09 13:57:55
原创
1872人浏览过

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()可用于Set

let 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}
登录后复制

以上就是ES6的Set数据结构是什么的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号