es6的Map()构造函数
普通的object对象是键值对的集合,但对于它的键却有着严苛的要求,必须是字符串,这给我们平时带来很多的不方便
Map函数类似于对象,但它是一个更加完美的简直对集合,键可以是任意类型
- set()方法可以向map实例对象中添加一组键值对
let a=new Map();
let key={name:"ww",sex:"man"};
a.set(key,'ABC');
console.log(a)//{{name:"ww",sex:"man"}=>"ABC"} let b=new Map();
b.set('name','zhangsan');
console.log(b)//{'name'=>'zhangsan'}
- get()方法可以向map对象获取一个属性值
let a=new Map();
let key={name:"ww",sex:"man"};
a.set(key,'ABC');
console.log(a.get(key))//'ABC'
- has()方法检测map对象中是否存在某个属性,返回bool
- delete()方法删除map对象中某个键,返回bool
let a=new Map();
let key={name:"ww",sex:"man"};
a.set(key,'ABC');
console.log(a.has(key))//true
a.delete(key);
console.log(a.has(key))//false
- Map()函数接受数组作为参数,最少必须是二维双数组,长度为2
let a=new Map([['name','wangwei'],['sex','man']]);
console.log(a)//{'name'=>'wangwei','sex'=>'man'} let b=new Set([['a','A'],['b','B']]);
let c=new Map(b);
console.log(c)//{'a'=>'A','b'=>'B'}
- Map()函数接受iterator接口,Map可以自己赋值,注意:不可以对象初始化Map
let b=new Set([['a','A'],['b','B']]);
let c=new Map(b);
let d=new Map(c);
console.log(d)
- Map函数初始化,注意:数组引用必须相同才会覆盖
let a=['a','A'];
let b=['a','A'];
let c=new Map();
c.set(a,1);
c.set(b,2);
console.log(c.get(a),c.get(b))// 1 2
let a=['a','A'];
let b=a;
let c=new Map();
c.set(a,1);
c.set(b,2);
console.log(c.get(a),c.get(b))// 2 2
- size属性获取map对象成员个数
- clear()属性清除map对象的成员
- forEach()遍历
- keys()
- entries()
- values()
let a=new Map([[1,'a'],[2,'b'],[3,'c']]);
for(let i of a){
console.log(i)
}
//[1,'a'],[2,'b'],[3,'c']
for(let i of a.keys()){
console.log(i)
}//1 2 3
for(let i of a.values()){
console.log(i)
}//a b c
for(let [key,value] of a.entries()){
console.log(key,value)
}//1 'a' 2 'b' 3 'c'
- Map转换为数组 方法 ...|...keys()|...values|...entries
let a=new Map([[1,'a'],[2,'b'],[3,'c']]);
let b=[...a];
console.log(b)//[[1,'a'],[2,'b'],[3,'c']]
let c=[...a.keys()];
console.log(c)//[1,2,3]
let d=[...a.values()];
console.log(d);//["a", "b", "c"]
let e=[...a.entries()];
console.log(e);//[[1,'a'],[2,'b'],[3,'c']]
- Map对象转换为对象,注意:Map的键必须全部是字符串
let a=new Map([['a','A'],['b','B'],['c','C']]);
let b={};
for(let [key,value] of a){
b[key]=value
}
console.log(b)//{a: "A", b: "B", c: "C"}
- 对象转换为Map
let a=new Map();
let b={a: "A", b: "B", c: "C"};
for(let i in b){
a.set(i,b[i])
}
console.log(a)//{"a" => "A", "b" => "B", "c" => "C"}
- JSON转对象,可以先转换为数组或者对象再转换为map
- weakMap()键必须是对象
es6的Map()构造函数的更多相关文章
- ES6中Map数据结构学习笔记
很多东西就是要细细的品读然后做点读书笔记,心理才会踏实- Javascript对象本质上就是键值对的集合(Hash结构),但是键只能是字符串,这有一定的限制. 1234 var d = {}var e ...
- [ES6] 18. Map
ES6 provides Map, it is a set of k-v pair. Key can be number, string, object, function and even unde ...
- ES6 Set & Map
ES6 Set & Map OK ES6 Map https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Globa ...
- ES6中map和set用法
ES6中map和set用法 --转载自廖雪峰的官方网站 一.map Map是一组键值对的结构,具有极快的查找速度. 举个例子,假设要根据同学的名字查找对应的成绩,如果用Array实现,需要两个Arra ...
- es6的map()方法解释
es6的map()方法解释 map方法的作用不难理解,即“映射”,也就是原数组被“映射”成对应新数组.下面这个例子是数值项求平方: var data = [1, 2, 3, 4]; var arr ...
- es6 关于map和for of的区别有哪些?
1.es6 关于map和for of的区别有哪些? ——主要想了解一下性能方面的
- es6的Map结构
es6的Map结构主要解决Object的键名只能是单一属性的问题.它可以是字符串,对象,数组,等等 其中有个问题要注意一下,就是 var map = new Map(); map.set(['a'], ...
- ES6新增Map、Set和iterable
Map需要一个二维数组 var test_map = new Map(["mians",99],["regink",88]) test_map.get(&quo ...
- ES6中Map与其他数据结构的互相转换
最近在学习ES6的基础知识,整理了一下Map与其他数据结构相互转换的写法. Map转为数组的方法 let myMap = new Map([[true, 7], [{foo: 3}, ['abc']] ...
随机推荐
- Libevent学习笔记(四) bufferevent 的 concepts and basics
Bufferevents and evbuffers Every bufferevent has an input buffer and an output buffer. These are of ...
- JAX-WS搭建WebService和客户端访问程序
开发环境:myeclipse8.6+jdk1.6.0_29+tomcat6.0.37 XFire搭建webservice: http://www.cnblogs.com/gavinYang/p/352 ...
- CodeBlocks调试器设置错误问题
错误如下: Building to ensure sources are up-to-date Selecting target: Debug ERROR: You need to specify ...
- 不用注解添加controller抛出No adapter for handler异常
不用注解添加controller时会抛出No adapter for handler异常. 解决方法:在DispatcherServlet的配置文件(***-servlet.xml)中加入如下两行: ...
- uefi模式下win10安装双系统ubuntu18.04LTS
自己折腾了半天,血与泪啊(难得一个可爱的周末 wwww我一定要写下来 跟这个博客几乎一模一样了 https://blog.csdn.net/xrinosvip/article/details/8042 ...
- Spring整合Quartz分布式调度
前言 为了保证应用的高可用和高并发性,一般都会部署多个节点:对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调 ...
- echarts初探:了解模块化
什么是echarts?这是官网:http://echarts.baidu.com/ 简单的说就是百度提供的一些画图表的库,用它你可以简便的画出一些你想要的图表效果. 虽然蛮好用的,但对于不知道模块化的 ...
- git push multiple repo
git remote add xxx https://git.github.com
- python中赋值、浅拷贝、深拷贝详解(转)
一.赋值 >>> a = [1, 2, 3]>>> b = a>>> print(id(a), id(b), sep='\n')139701469 ...
- PHP对象1: 创建对象与 $this
<?php class perl{ public $name; function __construct($name){ echo '一个对象造好了<br/>'; $this-> ...