JavaScript在ES6 中的 Set、Map
来源:互联网 发布:程序员杂志 下载 编辑:程序博客网 时间:2024/06/05 17:02
ES6 新增了几种集合类型,简单介绍 Set、Map着两个类型,比较新的 Firefox、Chrome(需要在 about:flags 启用实验性 JavaScript)以及 IE11 都有不同程度的实现。
Set 是 ES6 新增的有序列表集合,它不会包含重复项。Set
和Map
类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set
中,没有重复的key。之前我们通常用对象(Object)或者数组(Array)来实现没有重复项的集合。但对象会对 key 进行 toString() 操作,这会导致某些 key 会意外覆盖之前的数据;如果 key 本身是一个对象,toString() 也得不到想要的结果,
Set在需要在严格模式进行;
//sort排序var b=[1,9,2,3,4,4,7,7,8];var c=b.sort();console.log(c); //[ 1, 2, 3, 4, 4, 7, 7, 8, 9 ]//Set去重var a=new Set(b);console.log(a);//Set { 1, 2, 3, 4, 7, 8, 9 }
var o = {};var key1 = 2;var key2 = { toString : function() { return 2 } };var key3 = { x : 1 };var key4 = { y : 2 };o[key1] = 1;o[key2] = 2;o[key3] = 3;o[key4] = 4;// o : Object {2: 2, [object Object]: 4}Set 支持 add(item) 方法,用来向 Set 添加任意类型的元素,如果已经添加过则自动忽略;has(item) 方法用来检测 Set 中是否存在指定元素;delete(item) 方法用来从 Set 中删除指定元素;clear() 用来清空 Set;获取 Set 集合长度用 size 属性。
var set = new Set();set.add(window);set.has(window); // trueset.size; // 1set.add(window);set.add(1);set.size; // 2set.delete(window);set.has(window); // falseset.clear();set.size; // 0
Set 调用 add、has、delete 等方法时对 key 进行的比较,不做类型转换。可以认为使用「===」进行比较,当然也不全是「===」:
- Set 中,NaN 只能添加一次(虽然NaN === NaN 返回 false);
- Set 中,「-0」和「0 或 +0」可以同时存在,因为符号不一样(虽然 -0 === 0 或 -0 === +0 返回 true);
JavaScript的默认对象表示方式{}
可以视为其他语言中的Map
或Dictionary
的数据结构,即一组键值对。但是JavaScript的对象有个小问题,就是键必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的。为了解决这个问题,最新的ES6规范引入了新的数据类型Map
。
Map 是 ES6 新增的有序键值对集合。键值对的 key 和 value 都可以是任何类型的元素。通过 set(key, value) 方法为 Map 设置新的键值对,如果设置的 key 已经存在则用新的 value 覆盖,Map 在比较 key 时也不做类型转换,跟 Set 类似;Map 的 get(key) 方法用来获取指定 key 的值;Map 的 has(key) 、 delete(key) 、clear() 这些方法和 size 属性,与 Set 类似。
Map在需要在严格模式进行;
"use strict";// map是一组键值对的结构,具有极快的查找速度var map=new Map([['张飞',90],['王超',20],['文俊',59]]);console.log(map.get('张飞')); //90
- JavaScript在ES6 中的 Set、Map
- ES6中的Map和Set
- javascript ES6 Map 和Set结构总结
- 整理ES6中的Set和Map方法
- ES6中的Set和Map集合
- ES6中的Set和Map集合
- 【ES6】set和map
- ES6 Map Set总结
- 【es6】Set 和 Map
- ES6--Set 和 Map
- ES6---扩展运算符和rest‘...’(三点运算符),在数组、函数、set/map等中的应用
- ES6新增数据类型Map、Set。
- es6 set和map数据结构
- ES6 (十) Set 和 Map
- ES6 MAP,SET性能测试
- es6的map和set
- ES6的Set和Map
- es6 javascript的class类中的 get和set
- 输出字符串最后一个单词的长度
- Redis学习-数据结构
- 关于BETA、RC、ALPHA、Release、GA等版本号的意义
- 【Java】消化单例设计模式
- 小鱼的数字游戏
- JavaScript在ES6 中的 Set、Map
- WireShark 分析RTP丢包率
- Android set Tag, findViewWithTag使用
- #include <QtWidgets>找不到的
- python学习之*args 和 **kwargs
- 一张图解释ICMP协议
- linux 动态库的生成和使用
- Java中子类能够继承父类的private属性或方法吗
- 浏览器下载导出excel