ES6 Map和Set的用法笔记
一、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的用法笔记相关推荐
- ES6 解构赋值的用法笔记
1.概念:解构赋值可以理解为对赋值运算符的一种扩展.它主要针对数组或者 对象进行模式匹配,然后对模式中的变量进行赋值. 2.特性:采用ES6解构赋值的方式可以代码的可读性更高.代码书写更加简洁.清晰. ...
- ES6 let与const基础用法笔记
ES2015(ES6)新增了两个JS关键字:let和const.主要是用来变量的声明. 2.let 用法示例 { let score=100; alert(score); } let 特性 代码块内有 ...
- 【ES6】JS类的用法class
[ES6]JS类的用法class 一.概述 二.构造函数constructor 三.静态方法与静态变量 查看更多ES6教学文章: 参考文献 引言:由于JS之前一直没有特有的class来定义类的语法,E ...
- springboot+mybatis集成自定义缓存ehcache用法笔记
今天小编给大家整理了springboot+mybatis集成自定义缓存ehcache用法笔记,希望对大家能有所办帮助! 一.ehcache介绍 EhCache 是一个纯Java的进程内缓存管理框架,属 ...
- SpringBoot集成Redis用法笔记
今天给大家整理一下SpringBoot集成Redis用法笔记,希望对大家能有所帮助! 一.Redis优点介绍 1.速度快 不需要等待磁盘的IO,在内存之间进行的数据存储和查询,速度非常快.当然,缓存的 ...
- SpringBoot集成Mybatis用法笔记
今天给大家整理SpringBoot集成Mybatis用法笔记.希望对大家能有所帮助! 搭建一个SpringBoot基础项目. 具体可以参考SpringBoot:搭建第一个Web程序 引入相关依赖 &l ...
- es6 map()和filter()详解【转】
本文转载自: https://www.cnblogs.com/zxyun/p/7019631.html 作者:zxyun 转载请注明该声明. 原文地址:http://www.zhangxinxu.co ...
- map函数的简单用法。
在这里感谢新浪博客的daylive的博文: Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作! 1. map ...
- easyui前端实现多选框_前端:Element UI 多选框组用法笔记
今天给大家分享一下Element UI 多选框组用法笔记,直接上代码! "兴趣爱好:"> "form.checkList"> for= {{item ...
最新文章
- Hadoop集群的基本操作(四:Hive的基本操作)
- springboot分页展示功能_springboot+vue实现分页功能
- linux系统安装jdk及配置环境变量
- Android仿QQ复制昵称效果2
- joptionpane java_Java JOptionPane
- iOS关于代理的理解
- HCIE-Security Day13:防火墙双机热备实验(一)防火墙直路部署,上下行连接交换机
- 网页设计\网页制作常用软件大全
- Dash_API与必应翻译的综合使用
- 在vs2013下利用vb.net简单使用WebService实例
- 对话知名视觉艺术设计师走尺:只要用心 人人是插画师
- 学计算机主修,大学计算机专业自我介绍(精选5篇)
- ArcGIS Server 自定义比例尺切图
- Django 实现网站注册用户邮箱验证功能
- npm配置镜像、设置代理cnpm和取消代理的方法
- Windows + XMAPP + TestLink 初探
- python脚本模板
- Windows取证——隐藏术
- FTIR表征碳纳米材料—专项文献阅读
- Android搭建WebSocket服务端
热门文章
- 网络技术术语英汉对照
- HALCON示例程序color_simple.hdev在HSV空间筛选黄色线
- oracle 自增1,oracle自增无法从1开始
- 无法打开输入文件mysql_错误LNK1181,pip安装“无法打开输入文件”mysqlclient.lib'...
- C++定义隐式转换函数,将类转换为内部的一个成员变量
- java方法区对象类型_浅谈Java内存区域与对象创建过程
- java 正则匹配 sql星号,正则表达式匹配星号和换行符之间的字符串
- docker 部署nginx 使用keepalived 部署高可用
- 【计算机算法设计与分析】——5.4最优二分检索树
- 向anna学习系统结构和测试流程