<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Map</title>
</head>
<body>
<script>
/*Map 结构提供了“值—值”的对应*/
// let m = new Map();
// let obj = {'abc':123};
// m.set(obj,'content');//设置
// console.log(m.get(obj));//content /*Map 也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组*/
// const map = new Map([
// ['name', '张三'],
// ['title', 'Author']
// ]); // console.log(map.size) // 2
// console.log(map.has('name')) // true
// console.log(map.get('name')) // "张三" /*任何具有 Iterator 接口、且每个成员都是一个双元素的数组的数据结构(详见《Iterator》一章)都可以当作Map构造函数的参数*/
// const s = new Set([
// ['abc',111],
// ['cba',222]
// ]);
// const m1 = new Map(s);
// console.log(m1);//Map(2) {"abc" => 111, "cba" => 222} // const arr = [{'name':123},{'age':321}];//必须是双元素的数组结构,这样写会显示undefined
// const m2 = new Map(arr);
// console.log(m2);//Map(1) {undefined => undefined} /*只有对同一个对象的引用,Map 结构才将其视为同一个键*/
// const map = new Map();
// map.set(['a'], 555);
// console.log(map.get(['a'])); // undefined set和get方法,表面是针对同一个键,但实际上这是两个值,内存地址是不一样的 // let obj = ['abc'];
// map.set(obj,111);
// console.log(map.get(obj));//111 Map 的键实际上是跟内存地址绑定的 /*delete方法删除某个键*/
// const m = new Map();
// m.set(undefined, 'nah');
// m.delete(undefined); /*clear方法清除所有成员*/
// let map = new Map();
// map.set('foo', true);
// map.set('bar', false);
// map.clear(); /*Map 转为数组,Map 转为数组最方便的方法,就是使用扩展运算符(...)*/
// const myMap = new Map()
// .set(true, 7)
// .set({foo: 3}, ['abc']);
// console.log([...myMap])// [ [ true, 7 ], [ { foo: 3 }, [ 'abc' ] ] ] /*数组 转为 Map*/
// new Map([
// [true, 7],
// [{foo: 3}, ['abc']]
// ]) /*Map 转为对象,如果所有 Map 的键都是字符串,它可以无损地转为对象,如果有非字符串的键名,那么这个键名会被转成字符串,再作为对象的键名*/
// function strMapToObj(strMap) {
// let obj = {};
// for (let [k,v] of strMap) {
// obj[k] = v;
// }
// return obj;
// } // const myMap = new Map()
// .set('yes', true)
// .set('no', false);
// console.log(strMapToObj(myMap));// { yes: true, no: false } /*对象转为 Map*/
// function objToStrMap(obj) {
// let strMap = new Map();
// for (let k of Object.keys(obj)) {
// strMap.set(k, obj[k]);
// }
// return strMap;
// } // console.log(objToStrMap({yes: true, no: false}))// Map {"yes" => true, "no" => false} /*Map 转为 JSON*/
// function strMapToJson(strMap) {//Map 的键名都是字符串,这时可以选择转为对象 JSON
// return JSON.stringify(strMapToObj(strMap));
// } // function mapToArrayJson(map) {//Map 的键名有非字符串,这时可以选择转为数组 JSON
// return JSON.stringify([...map]);
// } // /*JSON 转为 Map*/
// function jsonToStrMap(jsonStr) {//所有键名都是字符串
// return objToStrMap(JSON.parse(jsonStr));
// } // function jsonToMap(jsonStr) {//整个 JSON 就是一个数组,且每个数组成员本身,又是一个有两个成员的数组。这时,它可以一一对应地转为 Map
// return new Map(JSON.parse(jsonStr));
// } </script>
</body>
</html>

备注:文中多数内容摘自阮一峰老师文章,仅供自我学习查阅。

https://edu.51cto.com/lecturer/11857712.html 星星课堂web前端系列课程
https://edu.51cto.com/course/23133.html js进阶与组件化实战课程
https://edu.51cto.com/course/26063.html vue零基础入门课程
https://edu.51cto.com/course/22393.html xhtml与css基础入门课程

ES6基础知识(Map用法)的更多相关文章

  1. ES6 基础知识

    let:用来定义变量特点:只能在代码块里面使用,let拥有块级作用域;并且let不允许重复声明; 比如: var a = 12; var a = 5; alert(a); //5; let a = 1 ...

  2. es6基础知识

    1.超引用:(...) 用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中 function fun(...args){ console.log(args); //[1,2,3,4,5,6] ar ...

  3. ES6基础知识(Reflect)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. es6基础知识总结(附加)

    附加: 字符串扩展: 1. includes(str) : 判断是否包含指定的字符串2. startsWith(str) : 判断是否以指定字符串开头3. endsWith(str) : 判断是否以指 ...

  5. ES6 基础知识-----简记 let const

    ES5中只有函数作用域和全局作用域,声明变量使用var,在es6中添加声明变量 let const let 声明块级作用域变量, let 不存在变量提升 var命令会发生”变量提升“现象,即变量可以在 ...

  6. ES6基础知识(async 函数)

    1.async 函数是什么?一句话,它就是 Generator 函数的语法糖. const fs = require('fs'); const readFile = function (fileNam ...

  7. ES6基础知识(Promise 对象)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. vue初体验-ES6 基础知识补充 let 和const

    本人水平有限,如内容有误,欢迎指正,谢谢. let  : 主要特点: 1.作用域只局限于当前代码块.2.使用let 声明的变量作用域不会被提升.3.在相同的作用域下不能声明相同的变量.4.for循环体 ...

  9. ES6基础知识汇总

    1.如何理解ECMAScript6? ECMAScript是什么,ECMASCript的作用 2.新增let关键字 let的用途 3.关键字const const作用,传址赋值 4.解构赋值 解构赋值 ...

随机推荐

  1. Dapr + .NET Core实战(八)服务监测

    服务监测 分布式服务性能指标,链路追踪,运行状况,日志记录都很重要,我们日常开发中为了实现这些功能需要集成很多功能,替换监控组件时成本也很高. Dapr 可观测性模块将服务监测与应用程序分离.它自动捕 ...

  2. Javascript设计模式之原型模式、发布订阅模式

    原型模式 原型模式用于在创建对象时,通过共享某个对象原型的属性和方法,从而达到提高性能.降低内存占用.代码复用的效果. 示例一 function Person(name) { this.name = ...

  3. 洛谷3320 SDOI2015寻宝游戏(set+dfs序)(反向迭代器的注意事项!)

    被\(STL\)坑害了一个晚上,真的菜的没救了啊. 准确的说是一个叫\(reverse\ iterator\)的东西,就是我们经常用的\(rbegin()\) 有一个非常重要的性质 在反向迭代器中,+ ...

  4. docker环境下搭建python3.6

    前言:当我们在一台电脑上搭建了python3.6的环境,下次换了个电脑或者换成linux的系统了又得重新搭建一次,设置环境变量,下载pip等操作.所以使用docker 一.安装python步骤: 1. ...

  5. python函数参数类型:位置参数、默认参数、动态参数、关键字参数

    1.位置参数:调用函数的时候传的参数,参数默认按顺序赋值,如果是指定那个参数赋值,不关注顺序.指定参数a=1,b=2 就在函数体内a=1,b=2 2.默认参数:在定义函数的时候,给某个参数设置默认值 ...

  6. 哈工大知识图谱(Knowledge Graph)课程概述

    一.什么是知识图谱 知识(Knowledge)可以理解为 精炼的数据,知识图谱(Knowledge Graph)即是对知识的图形化表示,本质上是一种大规模语义网络 (semantic network) ...

  7. PG集群(PostgreSql环境)搭建

    centos PG集群搭建 一.安装PG 1.安装之前首先查看软件是否已经安装 rpm -qa | grep postgresql #若存在,需要卸载使用 yum remove postgresql ...

  8. pycharm安装pika提示CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com>

    1. 问题描述: pycharm安装第三方库时提示CondaHTTPError: HTTP 000 CONNECTION FAILED. 2. 错误原因:默认镜像源访问速度过慢,会导致超时从而导致更新 ...

  9. python收集参数与解包

    收集任意数量的实参 def make_pizza(*toppings): """打印顾客点的所有配料""" print(toppings) ...

  10. 大闸蟹的 O O 第三单元日子——中测与强测的惨烈修罗场

    第三单元是大闸蟹体验及其差的一单元,鬼知道从一开始的自信慢慢到最后的自暴自弃我都经历了什么,我已经感觉到分数与gpa与头发都在渐渐和我说再见了 JML基础梳理及工具链 JML(Java Modelin ...