Map对象保存键值对,任何对象或者原始值都可以作为一个键或一个值。
Map中的key
- key可以是字符串
- key是对象
- key是函数
- key是NaN
Map的迭代
var myMap = new Map();
myMap.set(0,'zero');
myMap.set(1,'one');
myMap.set(2,'two');
console.log(myMap.size);//3
for(var [key,value] of myMap){
console.log(key + "=" +value);
}
for(var [key,value] of myMap.entries()){
console.log(key + "=" +value);
}
for(var key of myMap.keys()){
console.log(key); }
for(var value of myMap.values()){
console.log(value);
}
Map对象的操作
Map与Array的转换
var kvArray=[['key1','value1'],['key2','value2']];//一个二维键值对数组
var myMap=new Map(kvArray);//用Map构造函数将数组转换成一个Map对象
var kvArray2=Array.from(myMap);//用Array.from方法将Map对象转换成一个二维键值对数组
Map的克隆
var myMap1=new Map([['key1','value1'],['key2','value2']]);//一个Map对象
var myMap2=new Map(myMap1);//注意,新对象和原来对象的地址不相等
Map的合并
var myMap1=new Map([['key1','value1'],['key2','value2']]);
var myMap2=new Map([['key1','value1'],['key3','value3'],['key4','value4']]);
var myMaps=new Map([...myMap1,...myMap2]);//有重复的键值对或者键值,后面的会覆盖前面的。