JavaScript的对象键必须是字符串,ES6引入了Map和Set
//检查浏览器是否支持ES6 'use strict'; var m = new Map(); var s = new Set(); console.log('你的浏览器支持Map和Set!');
Map例子
'use strict'; var map = new Map([['小明', 95], ['小强', 90], ['小红', 100], [100, '大力']]); console.log(map.get('小明'));//95 console.log(map.get(100));//大力 map.set('小白', 60); console.log("打印map:" + map.get('小白'));//60 map.set('小黑'); console.log("打印map:" + map.get('小黑'));//undefined map.has('小强');//true map.delete('小红');//删除key='小红'
Set和Map类似,但是只储存key,重复key自动过滤
Set常用属性方法:
size属性:返回Set 集合的成员总数。 add(value) 方法:添加某个值,返回 Set 集合本身。 delete(value) 方法:删除某个值,返回一个布尔值,表示删除是否成功。 has(value) 方法:返回一个布尔值,表示该值是否为Set的成员。 clear() 方法:清除所有成员,没有返回值。
----------------------------
ES6标准引入了新的iterable
类型,Array
、Map
和Set
都属于iterable
类型。具有iterable
类型的集合可以通过新的for ... of
循环来遍历。
'use strict'; var a = ['A', 'B', 'C']; var s = new Set(['AA', 'BB', 'CC']); var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]); for (var x of a) { // 遍历Array console.log(x);//A B C } for (var x of s) { // 遍历Set console.log(x);//AA BB CC } for (var x of m) { // 遍历Map console.log(x[0] + '=' + x[1]);//1=x 2=y 3=z }
//forEach是iterable的内置方法
a.forEach(function(element,index,array){ // element: 指向当前元素的值 // index: 指向当前索引 // array: 指向Array对象本身 console.log(element + ', index = ' + index); //结果打印 /* A, index = 0 B, index = 1 C, index = 2 */ });
//循环Set
s.forEach(function (element, sameElement, set) {
console.log("elemnet:" + element + " sameElement:" + sameElement);//element和sameElement值相同
});
//Map的回调函数参数依次为value,key和map本身
m.forEach(function (value, key, map) {
console.log(" key=" + key + " value=" + value);
});