ajax实用技术教学课件作者程继洪肖川李海斌编著第8章常用对象简介8.8-8.9.pptx
文本预览下载声明
8.8 Map和Set 8.8.1 Map
在JavaScript中(自ECMAScript 5引入Map),Map是一个“键-值”对的集合。
在ES 5中Map的键只能是String字符串类型,但在ES 6中做出了重大改进,键可以是任意类型的对象,值也可以是任意类型的对象。
1、Map的创建与初始化
Map创建十分容易,使用new关键字创建即可,而且可以在创建时初始化。
◆ var map = new Map(); // 声明一个Map对象
◆ let map = new Map([
[1, one],
[2, two],
[3, three]
]); // 声明并初化一个Map
◆ let map = new Map()
.set(1, one)
.set(2, two)
.set(3, three);
其中let用于声明一个变量,最后一种方式是对象的链式调用。后面两种方式都是在声明Map时将其初始化。
2、Map的操作
Map通过get(key)方法获取指定的key对应的值,
通过set(key, value)设置“键-值”对,
通过delete(key)删除key对应的条目,
通过clear()方法清空Map。
map.get(1); // 返回one
map.delete(2); // 删除map中键为2的条目
3、Map的遍历
遍历Map有好多种方法,即可以遍历它的key的集合,也可以遍历value的集合,还可以遍历条目entries的集合,下面分别予以说明。
(1)遍历Map键(key)的集合
通过Map的keys()方法返回Map所有键的集合,然后通过for…of循环遍历每个键。
for (let key of map.keys()) {
console.log(key);
}
这种方式也可以通过get()方法获取key对应的value,也可用于间接访问Map的value的集合。
(2)遍历Map值的集合
通过Map的values()方法返回Map所有值的集合,然后通过for…of循环遍历每个值。
for (let value of map.values()) {
console.log(value);
}
(3)遍历Map的条目
通过Map的entries()方法获取Map条目的集合,然后通过for…of循环遍历每个条目,其中entry[0]表示key,entry[1]表示value。
for (let entry of map.entries()) {
console.log(entry[0], entry[1]);
}
还可以通过以下方式同时访问条目的key-value对:
for (let [key, value] of map.entries()) {
console.log(key, value);
}
这种用法比较陌生,请大家认真多写几遍,力求掌握。
下面通过一个例子来说明Map的用法,代码如清单8-11所示。
在清单8-11中,首先通过new关键字声明并初始化map1,这里需要注意的是初始化参数,它首先是一个数组[],数据的元素也是一个结构为[key, value]的数组,即
[
[1, Monday],
[2, Tuesday],
[3, Wendesday],
[4, Thursday],
[5, Friday],
[6, Saturday],
[7, Sunday]
]
类似于一个7×2的二维数组,而不一个简单的一维数组,这一点要特别注意。
对于map2的声明和初始化则采用了new关键字和链式调用的方式。
这里需要注意的是,在分行写的情况下,Map()后没有任何符号,它的符号在下一行,为“.”运算符,而每个set()后也是仅跟一个“.”运算符,
最后是一个分号表示该声明语句结束。格式如下:
var map2 = new Map()
.set(2015, {animal: 马, leep: 平年})
.set(2016, {animal: 猴, leep: 闰年})
.set(2017, {animal: 鸡, leep: 平年});
这种格式的写法要特别注意,不要每写一行“顺便”以分号结束,就会产生语法错误!
这一点要特别注意。
通过for…of循环遍历map2的条目entries的方法输出map2的值十分简单,代码如下:
for (let [key, value] of map2.entries()) {
console.log(key, value);
}
很遗憾,虽然简单,但输入的结果不能令人满意:
2015 Object {animal: 马, leep: 平年}
2016 Object {ani
显示全部