ES6 map学习

map是什么?

Map是具有极快查找速度的键值对结构。
就是储存键值对的嘛,类比python的dict类型

创建.

写起来还是挺麻烦,每个键值对都用中括号包围,然后最后再上一个大的中括号。python用的是冒号

var m= new Map([['libai',85],['xiaoming',33],['liqiang',67]]);

与python对比

dict = {'libai':85,'xiaoming':33,'liqiang':67}

用key来获取value

都是利用get方法
js

m.get("libai") //85

python

>>> dict.get('libai')
85

删除键值对

python这是大白话啊!这设计服了!
js

m.delete("libai")
//true
m
//Map(2) {"xiaoming" => 33, "liqiang" => 67}

python

>>> del dict['libai']
>>> dict
{'xiaoming': 33, 'liqiang': 67}

修改字典值

js

m.set("liqiang", 99)
//Map(2) {"xiaoming" => 33, "liqiang" => 99}

python

>>> dict['xiaoming']=99
>>> dict
{'xiaoming': 99, 'liqiang': 67}

添加键值对

和修改其实是一样的。

判断有无某个键

python又一次奇巧的设计
js

m.has('xiaoming')
true

python

>>> 'xiaoming' in dict
True

遍历

js

for (var [x,y] of m){
    console.log(x+' value: '+y);
}
// xiaoming value: 33 liqiang value: 99

python

>>> for x in dict:
    print (x+' value '+str(dict[x]))

    
xiaoming value 99
liqiang value 67

还可以这么玩,带不带括号都可以

>>> for (x,y) in m.items():
    print (x+str(y))

    
xiaoming33
libai85
liqiang67
>>> for x,y in m.items():
    print (x+str(y))

    
xiaoming33
libai85
liqiang67

总结

js设计的中规中矩,python设计不依常理出牌。比如删除m.delete("libai")点操作符 正常。
python del dict['libai']这么设计写起来更方便

参考

初步探究ES6之for循环和Map,Set - brizer的博客 - CSDN博客
[python]遍历字典dict的几种方法 - cn_wk的专栏 - CSDN博客

你可能感兴趣的:(ES6 map学习)