知识汇总10~es6的map与set用法

js默认的对象表达方式是{}可以视为其他语言中的 Map 和 Dictionary 的数据结构;即一组键值对key - value;(键值对)

js有个问题:对象表达方式{}中的键 key 必须是字符串,如下代码:

var names={1:”a”,2:”b”};

console.log(names.1)//Uncaught SyntaxError: missing ) after argument list

如上代码是报错的,所以number类型的是不能作为key来使用.在ES6中新增了Map功能,可以解决这个问题.

Map 



​Map的查询速度会比二维数组快,以下代码是二维数组:

var names=[1,2,3];

var scores=[95,89,78];

​二维数组array越长,耗时越长;而Map简单快速:

 var map=new Map([["a",95],["b",89],["c",78]]);​

//​Map的增删改查:

 map.get("d",67);//改变成员value;

 map.set("d",59);// 增加成员;

 map.has("d");//确定是否有某个成员;

 map.delete("d");//删除成员;

Set:​ 



​var s=new Set([1,2,3,3,3,3,”3”]);

s.add(4);//增加成员;

s.delete(4);//删除成员;

s.forEach(function(a){

alert(a+"/")

})//查看成员;

set去重


​Set与Map类似,但是Set的创建可以需要一个数组的输入,而且只是key的集合,并不存储value;key的值不能重复,所以在Set中不会有重复的key.这个原理可以过滤数组中的重复项

项目实战


在项目中遇到将一个字符串转化为字符串添加为下拉选择中的项,eg,"201807312235,201807312236,201807312237..."这些数字是时间年月日时分的写法,需要获取后配合vue中的v-for循环为下拉框的项,但是指定的项目类型有很多种,eg:'oneProject,twoProject...',每个项目获取的项目时间都不一样,在循环项目与时间时,需要配对,这个时候可以用map解决,
原文地址:https://www.cnblogs.com/sunshineForFuture/p/9394539.html