map和set

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看来,这个数组里的两个对象是两个彻底不一样的值,因此并不符合去重的要求。segmentfault

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));
复制代码

仅用于我的整理,参考:bash

JS中set和map的使用场景ui

js中的map和setspa

相关文章
相关标签/搜索