ES6的Set数据结构
来源:互联网 发布:电脑专业录音软件 编辑:程序博客网 时间:2024/06/10 05:34
ES6:Set
大神地址:来自阮一峰大神的ES6入门书籍
了解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}
阅读全文
0 0
- ES6的Set数据结构
- es6 javascript的set数据结构
- ES6(五) Set与Map的数据结构
- ES6 -- 新的数据结构:Set和Map
- ES6的数据结构set 和 map
- ES6之SET数据结构
- ES6--数据结构Set
- js-es6-set数据结构
- ES6 set数据结构
- es6 set和map数据结构
- 09、ES6 新增数据结构Set
- ES6中Set和Map数据结构的基本概念及应用
- ES6-新数据结构Set与WeakSet
- 自学-ES6篇-Set和Map数据结构
- es6常见属性Set和Map数据结构
- es6学习笔记Set和WeakSet数据结构
- es6新特性-Set和Map数据结构
- ES6之Set和Map数据结构
- Java基础:Java 强制类型转换
- PAT (Basic Level) Practise (中文) 1047. 编程团体赛(20)
- 高德地图Web服务API简介
- 用Java语言编写程序:输出100以内的素数
- HDU 1106字符串处理
- ES6的Set数据结构
- LintCode 电话号码的字母组合
- Ubuntu下安装mySql以及WorkBench
- bzoj1212: [HNOI2004]L语言
- Segment Fault & Abort trap
- ES6入门之set和map
- 腾讯we大会2017早鸟票开抢啦!!
- windows下的Zcash钱包(ZEC钱包)-zcash4win 1.0.11
- 人脸识别