JavaScript——ES6新增特性Map

Map定义

Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

键名

一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值

如字符串、函数、对象、数组、NaN等

var newMap=new Map()
var keyString="jian ming"
myMap.set(keyString,"jian zhi")
myMap.get(keyString)//jian zhi
myMap.get("jian ming")//jian zhi

 需要注意的是引用类型数据做键名的时候

var myMap = new Map();
var keyObj = {}, 
myMap.set(keyObj, "jian zhi");
myMap.get(keyObj); // "jian zhi"
myMap.get({}); // undefined, 因为 keyObj !== {}

方法 

迭代、对Map进行遍历

 1)for...of

var myMap = new Map()
myMap.set("zhang", "san")
myMap.set("li", "si")
for ([xing,ming] of myMap){
console.log([xing,ming])
}
//[zhang,san]
//[li,si]

可以在此过程中,调用一些方法进行操作

var myMap = new Map()
myMap.set("zhang", "san")
myMap.set("li", "si")
for (var [xing, ming] of myMap.entries()) {
console.log("姓:"+xing,"名:"+ming);
}
//姓:zhang 名:san
//姓:li 名:si

这个 entries 方法返回一个新的 Iterator 对象,它按插入顺序包含了 Map 对象中每个元素的 [key, value] 数组。

2)foreach

myMap.set("zhang", "san")
myMap.set("li", "si")
myMap.forEach(myfunction)
function myfunction(xing,ming){
console.log([xing,ming])
}
//[zhang,san]
//[li,si]

操作

1)转换

Array=>Map

var array1 = [[function fn(){}, {}], [[1,2], function fn(){}]]
var myMap = new Map(array1)
console.log(myMap)
//Map(2) {ƒ => {…}, Array(2) => ƒ}

Map=>Array

var array1 = [[function fn(){}, {}], [[1,2], function fn(){}]]
var myMap = new Map(array1)
var outArray = Array.from(myMap);
console.log(outArray)

2)克隆 

var myMap1 = new Map([["key1", "value1"], ["key2", "value2"]])
var myMap2 = new Map(myMap1)
console.log(myMap1 === myMap2)

打印值为false,产生新的对象

3)合并

var first = new Map([[1, 'one'], [2, 'two'], [3, 'three']]);
var second = new Map([[1, 'uno'], [2, 'dos']]);
// 合并两个 Map 对象时,如果有重复的键值,则后面的会覆盖前面的,对应值即 uno,dos, three
var merged = new Map([...first, ...second]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值