ES6中Map与其他数据结构的互相转换
最近在学习ES6的基础知识,整理了一下Map与其他数据结构相互转换的写法。
Map转为数组的方法
- let myMap = new Map([[true, 7], [{foo: 3}, ['abc']]]);
- [...myMap]
- console.log([...myMap]);
数组转为Map的方法
- new Map([[true, 7], [{foo: 3}, ['abc']]])
Map转为对象的方法
- function strMapToObj(strMap) {
- let obj = Object.create(null);
- for (let [k,v] of strMap) {
- obj[k] = v;
- }
- return obj;
- }
- let 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;
- }
- var a = {yes: true, no: false}
- console.log(objToStrMap(a))
- // [ [ 'yes', true ], [ 'no', false ] ]
Map转为Json的方法
- function strMapToObj(strMap) {
- let obj = Object.create(null);
- for (let [k,v] of strMap) {
- obj[k] = v;
- }
- return obj;
- }
- function strMapToJson(strMap1) {
- return JSON.stringify(strMapToObj(strMap1));
- }
- let myMap2 = new Map().set('yes', true).set('no', false);
- console.log(strMapToJson(myMap2));
- // '{"yes":true,"no":false}'
Map转为Json数组
- function mapToArrayJson(map) {
- return JSON.stringify([...map]);
- }
- let myMap = new Map().set(true, 7).set({foo: 3}, ['abc']);
- mapToArrayJson(myMap)
- console.log(mapToArrayJson(myMap))
- // '[[true,7],[{"foo":3},["abc"]]]'
json对象转换为Map
- function objToStrMap(obj) {
- let strMap = new Map();
- for (let k of Object.keys(obj)) {
- strMap.set(k, obj[k]);
- }
- return strMap;
- }
- function jsonToStrMap(jsonStr) {
- return objToStrMap(JSON.parse(jsonStr));
- }
- jsonToStrMap('{"yes":true,"no":false}')
- console.log(jsonToStrMap('{"yes":true,"no":false}'))
- // Map {'yes' => true, 'no' => false}
json数组转换为Map
- function jsonToMap(jsonStr) {
- return new Map(JSON.parse(jsonStr));
- }
- jsonToMap('[[true,7],[{"foo":3},["abc"]]]')
- console.log(jsonToMap('[[true,7],[{"foo":3},["abc"]]]'))
- // Map {true => 7, Object {foo: 3} => ['abc']}
ES6中Map与其他数据结构的互相转换的更多相关文章
- ES6中Map数据结构学习笔记
很多东西就是要细细的品读然后做点读书笔记,心理才会踏实- Javascript对象本质上就是键值对的集合(Hash结构),但是键只能是字符串,这有一定的限制. 1234 var d = {}var e ...
- ES6中map和set用法
ES6中map和set用法 --转载自廖雪峰的官方网站 一.map Map是一组键值对的结构,具有极快的查找速度. 举个例子,假设要根据同学的名字查找对应的成绩,如果用Array实现,需要两个Arra ...
- ES6中map数据结构学习
在项目中遇到一个很恶心的需求,然后发现ES6中的map可以解决,所以简单学习了一下map. Javascript的Object本身就是键值对的数据结构,但实际上属性和值构成的是“字符串-值”对,属性只 ...
- ES6中map数据结构
key值可以任意值或对象,value值可以是任意值或对象 let json={ name:'eternity', skill:'java' }; let map=new Map(); map.set( ...
- Es6中Map对象和Set对象的介绍及应用
map和set的方法,工作中有使用到,所以学习一下: Map 对象 Map 对象保存键值对.任何值(对象或者原始值) 都可以作为一个键或一个值. var myMap = new Map(); myMa ...
- 彻底弄懂ES6中的Map和Set
Map Map对象保存键值对.任何值(对象或者原始值) 都可以作为一个键或一个值.构造函数Map可以接受一个数组作为参数. Map和Object的区别 一个Object 的键只能是字符串或者 Symb ...
- ES6中的Set、Map数据结构
Map.Set都是ES6新的数据结构,他们都是新的内置构造函数.也就是说typeof的结果,多了两个. 他们是什么: Set是不能重复的数组. Map是可以任何东西当做键的对象: ES6 提供 ...
- ES6中的Set与Map数据结构
本文实例讲述了ES6学习笔记之Set和Map数据结构.分享给大家供大家参考,具体如下: 一.Set ES6提供了新的数据结构Set.类似于数组,只不过其成员值都是唯一的,没有重复的值. Set本身是一 ...
- ES6中的Set和Map集合
前面的话 在ES6标准制定以前,由于可选的集合类型有限,数组使用的又是数值型索引,因而经常被用于创建队列和栈.如果需要使用非数值型索引,就会用非数组对象创建所需的数据结构,而这就是Set集合与Map集 ...
随机推荐
- sqlserver 锁表进程及执行的SQL
--1.查进程select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableNamefrom sys.d ...
- idea 拉取git新分支
前面的话: 一不小心,删除了dev的分支,没办法.头头重新克隆了下,但是发现idea的右下角并没有啊,我记得之前遇到过一次 但还是忘记如何操作了,在这记录下,省的下次还得去百度 选中项目-git-fe ...
- 总结SQL查询慢的50个原因
查询速度慢的原因很多,本文总结SQL查询慢的50个原因: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优 ...
- Qt编写数据可视化大屏界面电子看板4-布局另存
一.前言 布局另存是数据可视化大屏界面电子看板系统中的额外功能之一,主要用于有时候用户需要在现有布局上做个微调,然后直接将该布局另存为一个布局配置文件使用,可以省略重新新建布局重新来一次大的调整的工作 ...
- NuGet修改packages目录/迁移缓存文件夹
如图,以下是NuGet默认配置 打开C:\Program Files (x86)\NuGet\Config目录的Microsoft.VisualStudio.Offline.config可以看见如下配 ...
- ubuntu kylin 18.04 使用 wine 安装 EasyConnect 的windows版本
首先下载wine: sudo apt-get install wine-stable 然后使用wine安装安装包EXE文件(安装包你自己去下): wine EasyConnectInstaller.e ...
- swift 第六课 scrollview xib 的使用
现在 xib,stroyBoard 这种图形话的编辑写代码,越来越简单.以前scrollview 这样的控件不会用xib ,网上查了 好多的资料.现在把步骤逐渐的写出来, 这里顺便写个Demo ,是一 ...
- golang web框架设计4:日志设计
beego的日志设计思路来自于seelog,根据不同的level来记录日志,beego设计的日志是一个轻量级的,采用系统log.Logger接口,默认输出到os.Stdout,用户可以实现这个接口然后 ...
- 知识点整理-mysql怎么查看优化器优化后的sql
背景 1.新建两张表 CREATE TABLE t1 (m1 )); CREATE TABLE t2 (m2 )); 2.插入些数据 INSERT INTO t1 VALUES(, , , 'c'); ...
- 驱动备份还原命令——驅動備份還原命令——Driver Backup/Restore
以管理員身份啓動命令提示符,輸入以下命令: 1.驅動備份(备份Backup)命令: Dism /online /export-driver /destionation:D:\DriverBackup ...