本文主要说说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
资料参考阅读:
如需转载,烦请注明出处:http://www.w3cplus.com/js/ecmascript-lesson-3.html