一、Map

1、概念:Map用来保存键值对,类似于字典类型。任意值(对象或者原始值)都可以作为一个键或者一个值。

2、Maps 和 Objects 用法比较

Object对象的键只能是字符串或者 Symbols类型,但Map对象的键可以是任意值。

Map 中的键值是有序的(FIFO 原则),而添加到Object中的键则不是。

Map 的键值对个数可以根据 size 属性获取,而 Object 的键值对个数只能手动计算。

Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。

3、用法示例

3.1定义

var map= new Map();

myMap.set(name, "小明"); //键值是字符串

myMap.get(name);    // 小明

var map= new Map();

var keyobj={};

map.set(keyobj, "小明"); //键值是对象

map.get(keyobj);    // 小明

var map= new Map(); //键值是函数

var keyfunc=function() {};

map.set(keyfunc, "小明");

map.get(keyfunc);    // 小明

var map= new Map(); //键值是NaN

map.set(NaN, "小明");

map.get(NaN);    // 小明

3.2 遍历用法

var map = new Map();

map.set(0, "小明");

map.set(1, "小王");

//for...of

for (var [key, value] of myMap) {

console.log(key + " = " + value);

}

// forEach()

myMap.forEach(function(value, key) {

console.log(key + " : " + value);

}, myMap)

3.3 Map对象操作

var arr = [["name", "小明"], ["age", 50]];

var map = new Map(arr);

// Map 构造函数可以将一个 二维 键值对数组转换成

一个 Map 对象

var outArray = Array.from(map);// 使用 Array.from 函数可以将一个 Map 对象转换成一个二维键值对数组

var map2=new Map(map);//Map拷贝功能

var map3=new Map([map,map2]);//合并两个 Map 对象时,如果有重复的键值,则后面的会覆盖前面的

console.log(map);

二、Set对象

1、概念:Set对象用来存储任意类型的唯一值。

特殊情况:

1、+0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;

2、undefined 与 undefined 是恒等的,所以不重复。

3、NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个。

2、用法示例

let mySet = new Set();

mySet.add(1);

mySet.add(5);

mySet.add(5);

mySet.add("some text");

console.log(mySet);

var mySet = new Set(["小明", "小王", "小张"]); //数组转set

var mySet = new Set('小明');//字符串转set

var mySet = new Set([1, 2, 3, 4, 4]);// [1, 2, 3, 4]

//并集

var a = new Set([1, 2, 3]);

var b = new Set([4, 3, 2]);

var union = new Set([...a, ...b]); // {1, 2, 3, 4}

//交集

var a = new Set([1, 2, 3]);

var b = new Set([4, 3, 2]);

var intersect = new Set([...a].filter(x => b.has(x))); // {2, 3}

// 差集

var a = new Set([1, 2, 3]);

var b = new Set([4, 3, 2]);

var difference = new Set([...a].filter(x => !b.has(x))); // {1}

ES6 Map和Set的用法笔记相关推荐

  1. ES6 解构赋值的用法笔记

    1.概念:解构赋值可以理解为对赋值运算符的一种扩展.它主要针对数组或者 对象进行模式匹配,然后对模式中的变量进行赋值. 2.特性:采用ES6解构赋值的方式可以代码的可读性更高.代码书写更加简洁.清晰. ...

  2. ES6 let与const基础用法笔记

    ES2015(ES6)新增了两个JS关键字:let和const.主要是用来变量的声明. 2.let 用法示例 { let score=100; alert(score); } let 特性 代码块内有 ...

  3. 【ES6】JS类的用法class

    [ES6]JS类的用法class 一.概述 二.构造函数constructor 三.静态方法与静态变量 查看更多ES6教学文章: 参考文献 引言:由于JS之前一直没有特有的class来定义类的语法,E ...

  4. springboot+mybatis集成自定义缓存ehcache用法笔记

    今天小编给大家整理了springboot+mybatis集成自定义缓存ehcache用法笔记,希望对大家能有所办帮助! 一.ehcache介绍 EhCache 是一个纯Java的进程内缓存管理框架,属 ...

  5. SpringBoot集成Redis用法笔记

    今天给大家整理一下SpringBoot集成Redis用法笔记,希望对大家能有所帮助! 一.Redis优点介绍 1.速度快 不需要等待磁盘的IO,在内存之间进行的数据存储和查询,速度非常快.当然,缓存的 ...

  6. SpringBoot集成Mybatis用法笔记

    今天给大家整理SpringBoot集成Mybatis用法笔记.希望对大家能有所帮助! 搭建一个SpringBoot基础项目. 具体可以参考SpringBoot:搭建第一个Web程序 引入相关依赖 &l ...

  7. es6 map()和filter()详解【转】

    本文转载自: https://www.cnblogs.com/zxyun/p/7019631.html 作者:zxyun 转载请注明该声明. 原文地址:http://www.zhangxinxu.co ...

  8. map函数的简单用法。

    在这里感谢新浪博客的daylive的博文: Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作! 1. map ...

  9. easyui前端实现多选框_前端:Element UI 多选框组用法笔记

    今天给大家分享一下Element UI 多选框组用法笔记,直接上代码! "兴趣爱好:"> "form.checkList"> for= {{item ...

最新文章

  1. Hadoop集群的基本操作(四:Hive的基本操作)
  2. springboot分页展示功能_springboot+vue实现分页功能
  3. linux系统安装jdk及配置环境变量
  4. Android仿QQ复制昵称效果2
  5. joptionpane java_Java JOptionPane
  6. iOS关于代理的理解
  7. HCIE-Security Day13:防火墙双机热备实验(一)防火墙直路部署,上下行连接交换机
  8. 网页设计\网页制作常用软件大全
  9. Dash_API与必应翻译的综合使用
  10. 在vs2013下利用vb.net简单使用WebService实例
  11. 对话知名视觉艺术设计师走尺:只要用心 人人是插画师
  12. 学计算机主修,大学计算机专业自我介绍(精选5篇)
  13. ArcGIS Server 自定义比例尺切图
  14. Django 实现网站注册用户邮箱验证功能
  15. npm配置镜像、设置代理cnpm和取消代理的方法
  16. Windows + XMAPP + TestLink 初探
  17. python脚本模板
  18. Windows取证——隐藏术
  19. FTIR表征碳纳米材料—专项文献阅读
  20. Android搭建WebSocket服务端

热门文章

  1. 网络技术术语英汉对照
  2. HALCON示例程序color_simple.hdev在HSV空间筛选黄色线
  3. oracle 自增1,oracle自增无法从1开始
  4. 无法打开输入文件mysql_错误LNK1181,pip安装“无法打开输入文件”mysqlclient.lib'...
  5. C++定义隐式转换函数,将类转换为内部的一个成员变量
  6. java方法区对象类型_浅谈Java内存区域与对象创建过程
  7. java 正则匹配 sql星号,正则表达式匹配星号和换行符之间的字符串
  8. docker 部署nginx 使用keepalived 部署高可用
  9. 【计算机算法设计与分析】——5.4最优二分检索树
  10. 向anna学习系统结构和测试流程