《献给你,我深爱的ECMAScript》之集合篇
发布于
小春
本文主要说说ECMAScript6 集合中新引入的Map和Set
以往我们用的比较多的就是Array或者Object来存取一些值
那什么是Map?
先看一段代码示例:
var myMap = new Map();
//set
myMap.set("name","zhangyaochun");
myMap.set("job","fe");
myMap.set("for","w3cplus");
myMap.set(NaN,"我能做NaN的对应值,真不容易~");
myMap.set(NaN,"我是来看看我能不能干掉楼上的~");
//+0 与 -0
myMap.set(+0,"我是+0");
myMap.set(-0,"我是-0");
//size
myMap.size; //6,为啥是6呢,后面有解释哦
//get - 不存在返回undefined
myMap.get("name"); //zhangyaochun
myMap.get("for"); //w3cplus
//has - 返回布尔值
myMap.has("name"); //true
myMap.has("for"); //true
//delete - 删除对应指定的key
//参数为空的话 什么都不做
myMap.delete("name");
myMap.has("name"); //false
//clear - 清空Map对象
myMap.clear();
很多同学从上面的代码中也大概知道Map对象提供的一些方法和属性了.
很直观的api设计,可以很方便地设置、获取和删除Map对象的键值,而且可以判定是否还有某个key以及整个Map对象对应的键值对个数。
来看看注释呗~
1. set的第一个参数key对应的数据类型不再那么单一(只能String),可以NaN、Object甚至Function(但是应用场景有待检查,我个人基本不用它做key)
2. Firefox19开始将以前的size()方法变成了size属性
3. Firefox19也同时新增了clear()方法来清空所有的键值,更人性化的api设计
4. key为+0 和 -0是不一样的键(尽管:+0 === -0 返回的是true)
5. 多次以NaN为键,只有第一次是有效的
那什么又是Set?
同样先来看一段代码示例:
var mySet = new Set();
//add - 增加一个指定的key
mySet.add(1);
mySet.add(2);
mySet.add(3);
//size属性 - Set对象的元素个数
mySet.size; //3
//has - 判断是否含有指定的key
mySet.has(1); //true
//delete - 删除指定的key
mySet.delete(1);
mySet.has(1); //false
mySet.size; //2
//clear - 清空Set对象
mySet.clear();
//有这个牛逼的功能
var set = new Set([1,2,3,4,4,4,4,4,4]);
set.size; //是几呢?自己试试呗
同样我们从代码示例中可直观地看到提供了设置、获取、清空、删除等方法。 而且Set对象存储的值一定是"唯一"的哦~
注释看过来~
1. Firefox19开始将原来的size()方法改为size属性
2. Firefox19开始支持clear()方法
3. +0 和 -0 也同样是不同的key值
4. 也不能存入多个NaN
资料参考阅读:
如需转载,烦请注明出处:https://www.fedev.cn/js/ecmascript-lesson-3.html
Nike Air Max 90 EZ Running Men Shoes Royal Blue Orange