Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
使用映射对象
let myMap=new Map();
let keyObj={},keyfunc=function(){},keysTring='hello word';
set(key,value) 添加值
myMap.set(keysTring,'keysTring的关联值')
myMap.set(keyfunc,'keyfunc的关联值')
myMap.set(keyObj,'keyObj的关联值')
size 获取Map的大小
console.log(myMap.size)  //3
get(key) 获取map的值
console.log(myMap.get(keysTring)) //keysTring的关联值
console.log(myMap.get('hello word')) //keysTring的关联值----------console.log(myMap.get(keyfunc)) //keyfunc的关联值
console.log(function(){}===keyfunc)  //false
console.log(myMap.get(function(){})) //undefined, 因为keyFunc !== function () {}----------console.log(myMap.get(keyObj)) //keyObj的关联值
console.log({}===keyObj)  //false
console.log(myMap.get({})) //undefined 因为keyObj !== {}
将NaN作为映射的键
myMap.set(NaN, "not a number");
console.log(myMap.get(NaN))  //not a numbervar otherNaN=Number('foo');
console.log(otherNaN)  //NaN
console.log(myMap.get(otherNaN))  //not a number 也可以取值
映射与数组对象的关系
let kvArray = [["key1", "value1"], ["key2", "value2"]];
var myMap1 = new Map(kvArray);
//使用映射对象常规的构造函数将一个二维键值对数组对象转换成一个映射关系
console.log(myMap1) //Map { 'key1' => 'value1', 'key2' => 'value2' }
console.log(myMap1.get('key1'))  //value1
console.log([...myMap1]) //[ [ 'key1', 'value1' ], [ 'key2', 'value2' ] ]
forEach()
var myMap2 = new Map(kvArray);
myMap2.forEach((value,index)=>{console.log(value+'---'+index)  //value1---key1   value2---key2
})
for..of
var myMap3 = new Map(kvArray);
for(var a of myMap3){console.log(a)      //[ 'key1', 'value1' ] [ 'key2', 'value2' ]
}for(var [key,value] of myMap3){console.log('key:'+key+', value:'+value)  //key:key1, value:value1 key:key2, value:value2
}
clear()方法会移除Map对象中的所有元素。
let clearMap=new Map();
clearMap.set('hello','word');
console.log(clearMap.size)  //1
clearMap.clear();   //清空
console.log(clearMap.size)  //0
delete(key)用于移除 Map 对象中指定的元素。
let delMap=new Map();
delMap.set('hi','word');
delMap.set('hello','word');
console.log(delMap)  //Map { 'hi' => 'word', 'hello' => 'word' }
delMap.delete('hi'); //执行删除操作
console.log(delMap)  //Map { 'hello' => 'word' }
has(key) 返回一个bool值,用来表明map 中是否存在指定元素.
let hasMap=new Map();
hasMap.set('hi','word');
hasMap.set('hi','hello word');
console.log(hasMap)  //Map { 'hi' => 'hello word' }   一样的key后面的value会覆盖前面的值
console.log(hasMap.has('hi')); //true
console.log(hasMap.has('hello')); //false
entries()把map对象转换为迭代器
let entriesMap=new Map();
entriesMap.set('a','A');
entriesMap.set('b','B');
let entries=entriesMap.entries();
console.log(entries.next()); //{ value: [ 'a', 'A' ], done: false }
console.log(entries.next().value); //[ 'b', 'B' ]
console.log(entries.next()); //{ value: undefined, done: true }
values() 返回一个新的Iterator对象
let valueMap=new Map();
valueMap.set('a','A');
valueMap.set('b','B');
let values=valueMap.values();
console.log(values.next())  //{ value: 'A', done: false }
console.log(values.next())  //{ value: 'B', done: false }
console.log(values.next())  //{ value: undefined, done: true }
WeakMap 对象是一组键/值对的集合,其中的键是弱引用的。其键必须是对象,而值可以是任意的。
WeakMap只提供了4个方法:
1.delete(key); 根据key删除value
2.get(key);根据key获取value
3.has(key) 根据key检查是不是存在value
4.set(key,value) 根据key设置valuelet weakMap=new WeakMap();
weakMap.set('hi','word')  //异常   因为WeakMap的键只能是个对象
let obj1={};
weakMap.set(obj1,'word')  //正常
console.log(weakMap)   //WeakMap {}
console.log(weakMap.get(obj1))  //word
console.log(weakMap.has(obj1))  //true
console.log(weakMap.delete(obj1))  //true 

每天进步一点,希望大家喜欢,也希望喜欢的朋友点个赞,后续继续更新...

初探ES6中的Map和WeakMap相关推荐

  1. es6中的map方法

    es6中的map方法 一.简单的说明 map是一种数据结构,类似于对象,但是里面的键的值可以是各种类型,包括对象也行 //声明Maplet m = new Map();m.set('name','zh ...

  2. 第十七节:ES6新增的Map和WeakMap 又是什么东西?

    上节介绍了Set和WeakSet,这节咱就讲Map和WeakMap是什么?当然,两者之前并没什么必然的联系,仅仅是用法类似. 什么是Map 介绍什么是Map,就不得不说起Object对象,我们都知道O ...

  3. 【ES6基础】Map与WeakMap

    开篇 ES6里除了增加了Set(集合)类型外(笔者在这篇文章<Set与WeakSet>有过介绍),今天的这篇文章笔者将继续介绍ES6引入的新类型--Map(映射类型)和其对应的弱类型Wea ...

  4. ES6中的Map和Set详解

    概览 本文主要介绍了 ES6新增的Set和Map 数据结构,对其特性和常见用法进行了梳理 一. Set Set是ES6中新增的数据结构,它类似于数组,但是Set数据中的元素都是唯一的,没有重复值的; ...

  5. ES6 中的 Set、Map 和 WeakMap

    ES6 新增了几种集合类型,本文介绍 Set.Map 和 WeakMap.比较新的 Firefox.Chrome(需要在 about:flags 启用实验性 JavaScript)以及 IE11 都有 ...

  6. ES6(三)——Set、WeakSet、Map、WeakMap

    一.Set的基本使用 在ES6之前,我们存储数据的结构主要有两种:数组.对象. 在ES6中新增了另外两种数据结构:Set.Map,以及它们的另外形式WeakSet.WeakMap. Set是一个新增的 ...

  7. ES6——Map和WeakMap

    ES6 提供了新的数据结构 Map. 它有九个常用方法: 通过键检查元素是否存在 has(key) 添加元素 set(key , value) 通过键移除元素 delete(key) 通过键获取值 g ...

  8. php 数据类型 map,es6中Set和Map的对比介绍(附代码)

    本篇文章给大家带来的内容是关于es6中Set和Map的对比介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Set 1.add()方法和size属性{ let list ...

  9. ES6中 Map 数据结构

    ES6新增了 Map数据结构,Map对象保存键值对,任何值(原始值或对象)都可以作为一个键或一个值. 基本用法 let map = new Map(); let obj = {name: 'Leon' ...

最新文章

  1. error C2589: “(”: “::”右边的非法标记;error C2059: 语法错误 : “::”
  2. 【Linux笔记(001) 】-- centos7 系统目录结构与文件
  3. 简析.NET Core 以及与 .NET Framework的关系
  4. linux lsof/netstat查看进程和端口号相关命令:
  5. 告诉我们您想要什么,我们将做到:消费者驱动的合同测试消息传递
  6. nodejs 代替python_Python/NodeJS坑记
  7. CSP-S/J2019认证相关内容
  8. java treemap lastkey,java.util.TreeMap.higherKey()方法实例
  9. char,varchar,nvarchar以及datetime和smalldatetime的区别
  10. Android新版NDK环境搭建
  11. 浪涌保护器ant120_浪涌保护器测试流程
  12. SQL Server 数据操作
  13. Python编写微信打飞机小游戏(一)
  14. 集线器、网桥、交换机的区别(详解干货!!!)
  15. java与c互通aes加密解密
  16. 红蜘蛛,极域,伽卡他卡,传奇电子教室的破解(源代码)
  17. 基于电商常识图谱的知识表示与应用
  18. 学习笔记:星火第一讲-使用Apollo 学习自动驾驶
  19. rust的错误和异常
  20. 详解UML类图(口诀记忆箭头方向)

热门文章

  1. cassss服务未启动_冰箱不启动是因为什么?要怎么解决这个问题
  2. 微信有电脑客户端吗_微信电脑版有哪些功能呢
  3. 如何在android的XML和java代码中引用字符串常量
  4. 如何使用VAIO Care恢复和还原VAIO
  5. ajax servlet设置响应,在jquery的请求ajax与在servlet中的响应ajax
  6. Oracle openv目录,2015年ORACLE数据库日常维护手册82281192.doc
  7. echarts tab切换_Python 数据可视化实战:使用 PyQt5 和 Echarts 打造股票数据看板
  8. oracle中的greatest,ORACLE 内置函数之 GREATEST 和 LEAST(转)
  9. python文件管理_超值的Python文件操作与管理!
  10. bootcamp空间不足_Bootcamp安装WinXP补丁时C盘空间不足怎么办?