Map和Set
set
//Set 我个人认为Set是多用来操作数组的
var array=[1,2,3,3,2,1];
//数组去重
var set=new Set(array);
console.log(set); //{1,2,3}
//获取长度
set.size() //3
//添加元素
set.add(4);//添加已有元素会将原来的元素覆盖,长度不变
console.log(set) //{1,2,3,4}
//删除元素
set.delete(4);
console.log(set) //{1,2,3}
//将map转换为数组对象
set=Array.from(set);
console.log(set);//[1,2,3]
//获取数组中最大值
var max=Math.max(...set);
console.log(max);//3
map
//Map
var map=new Map();
map.set("a",1);
map.set("a",3);//对一个key重复赋值时,会进行覆盖,取最近的赋值 a=3;
map.set("b",4);
console.log(map);//{a:3,b:4}
//删除元素
map.delete("a");
console.log(map)//{b:4}
set应用场景
Set和Array的区别是Set里的每一个元素都是唯一的,比如你有一个Array里面有4个元素[1, 2, 3, 1],如果你把它转换成Set,就变成[1, 2, 3]了。所以我们可以利用Set的这个特性做整数数组的去重。但要注意的是,如果你的数组是[{name: 1}, {name: 1}]这样的包含Object的数组,那么你把它转换为Set时并不能去重,因为虽然这两个对象看起来一样,但在Set看来,这个数组里的两个对象是两个完全不同的值,所以并不符合去重的要求。
map应用场景
Map和Object很类似,但Map有一个比较特殊的应用场景。如果你在开发时不确定键值对里面的键的名称,那么你需要用Map。举例来说,你需要动态地从MongoDB里获取键值并显示给用户,但也许你并不关心这些键值的键名到底是什么,那么在这种情况下,你可以用Map,例如这样:
var myMap = new Map();
var keyObj = {},
keyFunc = function () { return 'hey'},
keyString = "a string";
myMap.set(keyString, "value associated with 'a string'");
myMap.set(keyObj, "value associated with keyObj");
myMap.set(keyFunc, "value associated with keyFunc");
console.log(myMap.get(keyFunc));
仅用于个人整理,参考: