map,存储多个键值对的数据集合

在ES5中,我们使用的是对象的方式来存储键值对,键是属性名,值是属性值,这种方法有以下问题

1)键名只能是字符串

2)获取数据的数量不方便

3)键名容易跟原型上的名称冲突

ES6中新增了map集合专门用于存储多个键值对数据。 键值对(key value pair)数据集合的特点:键不可重复。

1.创建map

1)new Map() —— 创建一个空的map

2)new Map(iterable) ——  创建一个具有初始内容的map,初始内容来自于可迭代对象每一次迭代的结果,但是,它要求每一次迭代的结果必须是一个长度为2的数组,数组第一项表示键,数组的第二项表示值

【例1】

const mp1 = new Map();
const mp2 = new Map([["a", 3], ["b", 2], ["c", 6]]);
console.log('mp1:', mp1);
console.log('mp2:', mp2);

【结果】 

2.方法

1)size:只读属性,获取当前map中键的数量

【例2】

const mp2 = new Map([["a", 3], ["b", 2], ["c", 6]]);
console.log('mp2的size:',mp2.size);

【结果】 

2)set(键,值):设置一个键值对,键和值可以是任何类型:如果键不存在,则添加一项;如果键已存在,则修改它的值;比较键的方式和set相同

【例3】

const mp2 = new Map([["a", 3], ["b", 2], ["c", 6]]);
console.log('原始mp2:',mp2)
const obj = {}
mp2.set(obj, 13);
console.log('添加obj后的mp2:',mp2);
mp2.set("a",4);
console.log('修改a的值后的mp2:',mp2);

【结果】

 3)get(键):根据一个键得到对应的值

4)has(键):判断某个键是否存在

5)delete(键):删除指定的键

6)clear():清空map

3.和数组互相转换

【例4】

const mp2 = new Map([["a", 3], ["b", 2], ["c", 6]]);
//map => array
const arr = [...mp2];
console.log(arr);
//array => map
const mp3 = new Map(arr);
console.log(mp3);

【结果】

map,存储多个键值对的数据集合_第1张图片

4.遍历

1)for-of:每次迭代得到的是一个长度为2的数组

【例5】

const mp2 = new Map([["a", 3], ["b", 2], ["c", 6]]);
for (const iterator of mp2) {
    console.log(iterator);
}

【结果】

 

2)forEach:通过回调函数遍历

参数1:每一项的值

参数2:每一项的键

参数3:map本身

【例6】

const mp2 = new Map([["a", 3], ["b", 2], ["c", 6]]);
mp2.forEach((item, index, mp) => {
    console.log(item, index, mp)
});

【结果】

 

 

你可能感兴趣的:(ES6,javascript,es6)