Map是一组键值对的结构,具有极快的查找速度。
举个例子:
'use strict';
var m = new Map(); //空map
m.set("tom",88)
m.set("bob",95) //添加 key-value
console.log(m.has("tom")) //输出 true
console.log(m.get("tom")) //输出88
m.delete("tom")
console.log(m.get("tom")) //输出undefined
console.log(m.get("bob")) //输出95
m.set("bob",90)
console.log("bob") //输出90
由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉。
Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key,重复元素在Set中自动被过滤。
var s = new Set([1, 2, 3, 3, '3']);
s; // Set {1, 2, 3, "3"}
通过add(key)方法可以添加元素到Set中,可以重复添加,但不会有效果;通过delete(key)方法可以删除元素。
var s = new Set([1, 2, 3]);
s.add(4);
s; // Set {1, 2, 3, 4}
s.add(4);
s; // 仍然是 Set {1, 2, 3, 4}
s.delete(3);
s; // Set {1, 2,4}
console.log(s.size) ; // 输出3 ,类似与array 的 length
var array = Array.from(s); //set转数组
console.log(array); // [1,2,4]
所以数组的去重将会变得非常简单
var array = [1,"1","1","2","3","2","4","3","5","6","6"]
var s = new Set(array)
var newArr = Array.from(s)
console.log(newArr) // [1, "1", "2", "3", "4", "5", "6"]
注意:数字1 和字符串 “1” 不是相同元素