1、Set 数据结构

/** Set 对象允许你存储任何类型的值,且存储的值是唯一的,* 存储的值可以是原始类型或者是引用类型。*/// 创建一个空的 Set 实例(可以传参,定义set的长度)
var  set  =  new Set() // Set(0) {}
// 添加数据
set.add('ES6') // Set(1) {"ES6"}
// 还可以链式添加数据
set.add('Javascript').add('7') // Set(3) {"ES6", "Javascript", "7"}
// 接受一个可遍历的对象,作为默认值,大部分情况是数组
var  set  =  new Set([1, 2, 3])
console.log(set) // Set(3) {1, 2, 3}

2、Map数据结构

/** Map 数据结构用于存储复杂的数据类型。Map 保存的是键值对,* 并且能够记住键的插入顺序,而且任何值都可以作为 Map 的键来使用,包括对象类型。*/// 创建一个空的 Map 对象(可以传参,定义set的长度)
var  map1  =  new Map()
map1.set('a', 1);
map1.set('b', 2);
map1.set('c', 3);
console.log(map1) // Map(3) {"a" => 1, "b" => 2, "c" => 3}// map也可以进行链式调用
var  map2  =  new Map()
map2.set('a', 1).set('b', 2).set('c', 3)
console.log(map2) // Map(3) {"a" => 1, "b" => 2, "c" => 3}// 接收一个二维数组,二维数组中包含两个值,key和value
var  map3  =  new Map([["x", 10], ["y", 20], ["z", 30]]);
console.log(map3) // Map(3) {"x" => 10, "y" => 20, "z" => 30}
console.log(map1.get('a')) // 1
console.log(map3.get('z')) // 30

3、Set、Map 和 Array、Object相互转化

//Set 转 Array
let  set  =  new Set([1, 2, 3, 4]);
let  a  = [...set]// [1,2,3,4]
Array.from(set) //[1,2,3,4]//Array转Map
let arr=[['name','xiaoming'],[{name:'xiaoming'},['JavaScript','Java']]]
let map  =  new Map(arr);console.log(map)//效果图见图一//Map 转 Array
const  map  =  new Map()
map.set('name', 'xiaoming')
map.set({name: 'xiaoming'}, ['JavaScript', 'Java']);
console.log([...map])//效果图见图二// Object 转 Map
function  objToMap(obj){let  map  =  new Map();for (let [key, value] of  Object.entries(obj)){map.set(key, value);}return  map;
}
objToMap({name:'xiaoming', age: 7})//效果图见图三/* Map 转 Object* Map 的键都是字符串,它可以转为对象,* 如果键是一个对象,在转为对象时会被进行 toString 操作。*/
function  mapToObj(map){const  obj  = {}for (let [key, value] of  map){obj[key] =  value;}return  obj;
}const  map1  =  new Map()map1.set('name', 'xiaoming')map1.set('age', 7);console.log(mapToObj(map1))//效果图见图四const  map2  =  new Map()map2.set('name', 'xiaoming')map2.set({name: 'xiaoming'}, ['JavaScript', 'Java']);console.log(mapToObj(map2))//效果图见图五

效果图:

图一:

图二:

图三:

图四:

图五:

欢迎访问我的个人博客

ES6学习笔记六(新增数据结构)相关推荐

  1. ES6学习笔记六(Iterator和for..of)

    {let arr=['hello','world'];let map=arr[Symbol.iterator](); //返回false时继续执行,true停止执行! console.log(map. ...

  2. ES6学习笔记(五):轻松了解ES6的内置扩展对象

    前面分享了四篇有关ES6相关的技术,如想了解更多,可以查看以下连接 <ES6学习笔记(一):轻松搞懂面向对象编程.类和对象> <ES6学习笔记(二):教你玩转类的继承和类的对象> ...

  3. ES6学习笔记04:Set与Map

    ES6学习笔记04:Set与Map JS原有两种数据结构:Array与Object,ES6新增两种数据结构:Set与Map 一.Set数据结构 Set类似于数组,但是成员值不允许重复,因此主要用于数据 ...

  4. ES6学习笔记03:变量的解构赋值

    ES6学习笔记03:变量的解构赋值 如果想从复杂数据结构(数组.对象)中获取某一个数据,可能需要大量的遍历操作才能完成.通过解构赋值,这一过程可以得到简化. 1.字符串的解构赋值 其实,Python也 ...

  5. opencv 手选roi区域_【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  6. # es6 学习笔记

    es6 学习笔记 let变量 let和var用法级别一样 let不能重复声明,但是var可以 var varIns = "A"; var varIns = "B" ...

  7. Ethernet/IP 学习笔记六

    Ethernet/IP 学习笔记六 EtherNet/IP defines two primary types of communications: explicit and implicit (Ta ...

  8. es6学习笔记-字符串的扩展_v1.0_byKL

    es6学习笔记-字符串的扩展_v1.0 字符的Unicode表示法 JavaScript 允许使用uxxxx的形式表示一个字符,但在 ES6 之前,单个码点仅支持u0000到uFFFF,超出该范围的必 ...

  9. 吴恩达《机器学习》学习笔记六——过拟合与正则化

    吴恩达<机器学习>学习笔记六--过拟合与正则化 一. 过拟合问题 1.线性回归过拟合问题 2.逻辑回归过拟合问题 3.过拟合的解决 二. 正则化后的代价函数 1.正则化思想 2.实际使用的 ...

  10. ES6学习笔记(三):教你用js面向对象思维来实现 tab栏增删改查功能

    前两篇文章主要介绍了类和对象.类的继承,如果想了解更多理论请查阅<ES6学习笔记(一):轻松搞懂面向对象编程.类和对象>.<ES6学习笔记(二):教你玩转类的继承和类的对象>, ...

最新文章

  1. MoviePy - 中文文档4-MoviePy实战案例-把多个clip放置在一个画面中(超美)
  2. 【CV实战】年轻人的第一个深度学习图像分割项目应该是什么样的(Pytorch框架)?...
  3. python类方法继承_对python中类的继承与方法重写介绍
  4. java 图像倾斜角度计算_【干货】无人机航测倾斜实景三维建模进行土方计算(基于Smart3D全面讲解)...
  5. 机器学习中的数学知识(part4)--拟牛顿法
  6. 我们真的需要统一的编程规范?
  7. dockerfile二进制mysql_Dockerfile源码分离部署LNMP(Centos7)
  8. UTF-8 和 Unicode 的区别
  9. 解决phpcms模版设置中不能显示栏目首页模板,栏目列表页模板,内容页模板等下拉菜单选项的问题!...
  10. index.php上传到服务器找不到站点,ThinkPHP上传到服务器出现404,未找到index.php模板等问题...
  11. C语言练习题(递归)
  12. switchhost提示没有切换权
  13. 不要随意设置随机数种子
  14. postgresql点云las_三维点云目标提取总结【转】
  15. Springer LNCS Latex 模板 无法下载
  16. mysql备份、还原数据库(命令行)
  17. c语言模拟交通信号,C语言编写的交通信号灯
  18. 征服英语的二十二条军规
  19. NRF52832程序烧录失败原因
  20. PCIe系列专题之二:2.8 事务排序机制

热门文章

  1. linux在多核处理器上的负载均衡原理(2)
  2. 内核调试神器SystemTap — 更多功能与原理(三)
  3. 深度学习优化算法大全系列6:Adam
  4. python smtplib发送邮件可直接运行代码
  5. 深度学习里的损失函数与交叉熵
  6. 求数列的最大子段和java_十大经典排序算法(Java版本)
  7. php tp框架文档,Thinkphp 框架基础之入口文件功能、定义与用法分析
  8. zencart手工备份mysql数据库_MySQL数据库镜像 / 实时备份Zen Cart数据库
  9. 防火墙放开oracle远程,oracleMTS模式下防火墙如何开通
  10. linux chmod命令