Map方法:Map
是一组键值对的结构,具有极快的查找速度。
举一个简单的例子:根据姓名查找对应年龄,如果用Array来实现,我们需要建立两个Array:
var name=["aa","bb","cc"];
var age=[23,43,12];
给定一个名字,要查找对应的年龄,就先要在name中找到对应的位置,再从age取出对应的年龄,Array越长,耗时越长。
如果用map来实现的话,只需要姓名-年龄的对照表,直接根据name来查,无论数据有多大,速度都不会慢。
var a=[["aa",23],["bb",43],["cc",12]];
var person=new Map(a);
person.get("aa"); //23
初始化Map
需要一个二维数组,或者直接初始化一个空Map
。Map
具有以下方法:
1.可以利用set,添加新的key-value的键值对形式数据
2.可以利用has,来遍历是否存在key值得数据。
3.可以利用delete,删除对应数据。
var m= new Map(); // 初始化map
m.set("aa",11); //新增数据key-value
m.set("bb",22);
m.has("aa");//has检查书否存在 ket:"aa" :true
m.delete("aa");//删除对应数据
m.get("aa"); //underfind
set方法:Set
和Map
类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set
中,没有重复的key。
要创建一个Set
,需要提供一个Array
作为输入,或者直接创建一个空Set
:
var s1 = new Set(); // 空Set
var s2 = new Set([1, 2, 3]); // 含1, 2, 3
set方法比较实用的一个作用是可以去除数组重复数据。
重复元素在Set
中自动被过滤:
var s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}