Map 对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者基本类型)都可以作为一个键或一个值。
- Map的每个键值只能出现一次,可以用作数组去重。
Map中的键是有序的。因此,当迭代的时候,一个Map对象以插入的顺序返回键值。Map的键值对个数可以轻易地通过size属性获取。- 不能使用**
JSON.stringify()** 方法将一个 JavaScript 对象或值转换为 JSON 字符串,即不能像Object一样进行序列化。
实例:
const myMap = new Map([['请求code','请求']
['getChannelTree', getChannelTree],
['getFormats', getFormats],
['getXJFormats', getXJFormats],
]);
//返回Map对象的成员数量
myMap.size //3
//get()方法从Map对象返回指定的元素。
//直接去调getChannelTree接口
myMap.get('getChannelTree')
const B = 2
const myMap1 = ([['A',B]])
myMap1.get('A') //2
//has返回Boolean值,判断指定键的值是否存在
myMap.has('getChannelTree') // true
myMap.get('getChannelTree1') //false
//set()为Map对象添加新的键值对
myMap.set('getDefaultReportTemplate', getDefaultReportTemplate)
//delete()删除Map对象的指定元素
myMap.delete('getDefaultReportTemplate', getDefaultReportTemplate)
//clear() 方法会移除 `Map` 对象中的所有元素
myMap.clear()
myMap.size //0
//keys()返回一个引用的迭代器对象。它包含按照顺序插入 `Map` 对象中每个元素的 key 值。
const iterator1 = myMap.values()
iterator1.next().value //'getChannelTree'
//values()方法返回一个新的迭代器对象。它包含按顺序插入Map对象中每个元素的value值。
const iterator1 = myMap.values()
iterator1.next().value //调函数getChannelTree
//entries()方法返回一个新的迭代器对象
const iterator1 = myMap.values()
//forEach()方法按照插入顺序依次对Map中每个键/值对执行一次给定的函数。
function logMapElements(value, key, map) {
console.log(`m[${key}] = ${value}`);
}
new Map([
['foo', 3],
['bar', {}],
['baz', undefined],
]).forEach(logMapElements);
// "m[foo] = 3"
// "m[bar] = [object Object]"
// "m[baz] = undefined"