ES6-Map、Set与Arrary的转换

2023-11-15

  • Map与Array的转换(这个数组要是二维数组)

<script>
		//Map转二维数组
		var arr1=[["name","karen"],["age",20]]
		var map1=new Map(arr1)
		// Map 构造函数可以将一个二维键值对数组转换成一个 Map 对象
		console.log(map1); // {'name' => 'karen', 'age' => 20}
	
		//二维数组转Map
		var arr2=Array.from(map1)
		console.log(arr2); //['name', 'karen'] ['age', 20]  
        console.log(arr1,map1,arr2,arr1==arr2) //...false 不是同一个数组
        console.log(arr1[2][1]==arr2[2][1])//true Array.from()里面的对象是同一个

</script>

Map转Array:构造Map函数,将数组传入Map

Array转Map:用Array.from静态方法,将Map传入

 

  • Set与Array的转换

<script>
		var arr1=[{name:"rose"},20,{name:"rose"},20,30]
		//{name:"rose"}:这是两个不同的对象;20 20 是同一个基本数据
		//数组转集合
		var set1=new Set(arr1)
		console.log(set1,set1.size) //{{…}, 20, {…}, 30}  4

		//集合转数组
		var arr2=Array.from(set1)
		console.log(arr1,set1,arr2)
		//[{…}, 20, {…}, 20, 30]   {{…},20,{…},30}  [{…},20,{…},30]
		//对比两个数组中的引用对象是否相等
		console.log(arr1[4]==arr2[3]) //true  是同一个对象
</script>

Set转Array:构造Set函数,将数组传入Set

Array转Set:用Array.from静态方法,将Set传入

Array.from转换时也没有创建新的对象

  • 多个数组转Set和Map 

<script>
		var arr1=[1,"hi"]
		var arr2=[2,"hihi"]
		var arr3=[3,"hello"]
		//...将数组中的每个元素取出,装入集合里
		var set1=new Set([...arr1,...arr2,...arr3]) 
		//数组转map是二维数组
		var map1=new Map([arr1,arr2,arr3]) //这样写是二维数组
		var map2=new Map(map1) //Map的克隆
		//map1和map2都是{1 => 'hi', 2 => 'hihi', 3 => 'hello'} false 
		console.log(map1,map2,map1==map2) //false 因为new关键字创建了新对象
		//new:如果克隆的源对象有对象{},则克隆出的对象是同一个对象
		//克隆是浅拷贝
</script>
  • String转Set 

<script>
		//String转Set
		var mySet = new Set('hello');
		console.log(mySet);// Set(4) {"h", "e", "l", "o"}
</script>

 Set 中 toString 方法是不能将 Set 转换成 String

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ES6-Map、Set与Arrary的转换 的相关文章

  • 如何在 Chrome 中创建 TouchEvent?

    The W3C规范 http www w3 org TR 2011 WD touch events 20110505 idl def TouchEvent宣称initTouchEvent如下 void initTouchEvent in D
  • 请解释与 Google Chrome 扩展程序的后台通信

    我已经阅读并重新阅读了此页面 并运行了示例 http code google com chrome extensions background pages html http code google com chrome extension
  • 如何使用键盘和鼠标控制相机 - Three.js

    我在 WEB GL 中有一个带有 Three js 的 3D 环境 并且我曾经使用 Orbitcontrols js http codepen io nireno pen cAoGI http codepen io nireno pen c
  • ant-d upload中如何为removeFile添加PopConfirm一个图片文件

    我正在使用 Ant d Upload 通过本地系统上传文件 然后单击文件预览图像上的删除图标 图像文件将被删除 我想添加一个弹出确认 所以我尝试在 onRemovefunction 中添加确认作为承诺但它不起作用 它在浏览器中显示警报 on
  • 将音频与视频流合并 Node.js

    我正在创建 YouTube 视频下载器并且正在使用ytdl core库 它无法下载带有音频的高质量视频 因为 youtube 将其放在另一个文件中 但我需要将其全部下载到一个文件中 我已经这样做了 app get download asyn
  • 何时不使用承诺[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在阅读了数十篇关于 es6 Promise 有多伟大以及为什么我们应该实现它们的文章之后 我有这样的感觉 ALL我的 不平凡的 JavaScri
  • KeyboardEvent.keyCode 已弃用。这在实践中意味着什么?

    根据 MDN 我们绝对应该not正在使用 keyCode财产 它已被弃用 https developer mozilla org en US docs Web API KeyboardEvent keyCode https develope
  • 访问 TypeScript 数组的最后一个元素

    TypeScript 中有访问数组最后一个元素的符号吗 在 Ruby 中我可以说 array 1 有类似的东西吗 您可以通过索引访问数组元素 数组中最后一个元素的索引将是数组的长度 1 因为索引是从零开始的 这应该有效 var items
  • jQuery 选择器:为什么 $("#id").find("p") 比 $("#id p") 更快

    该页面的作者 http 24ways org 2011 your jquery now with less suck http 24ways org 2011 your jquery now with less suck断言 jQuery
  • 如何清除WebGL中的矩形区域?

    WebGL 有一个clear清除整个表面的方法 清除表面的特定矩形的最佳方法是什么 例如 我想将一个从 50 50 开始的 100x100 像素框设置为全零 ARGB 0 0 0 0 我现在能想到的就是用一个写入零的片段着色器绘制一个四边形
  • 选中复选框时提交表单

    有没有办法在选中复选框时提交表单
  • React无限滚动scrollableTarget动态获取id?

    我在我的项目中使用react infinite scroll component 如何让scrollableTarget动态获取item id 我试过这样scrollableTarget item id 但它不起作用 必须与该 div 具有
  • 是否可以使用打字稿映射类型来创建接口的非函数属性类型?

    所以我正在研究 Typescript 的映射类型 是否可以创建一个接口来包装另一种类型 从而从原始类型中删除函数 例如 interface Person name string age number speak void type Data
  • 有关于 PHP 中的 V8JS 的文档吗?

    有没有关于V8JS的文档 我是否只需要标准 PHP 或一些扩展即可使用 V8JS 我将非常感谢有关 PHP 中的 V8JS 的任何信息 要求 PHP 5 3 3 和 V8 库和标头安装在正确的路径中 Install http www php
  • Jquery,清除/清空 tbody 元素的所有内容?

    我认为这会相当简单 但似乎空方法无法清除我拥有的 tbody 如果有人知道执行此操作的正确方法 我将不胜感激 我只想删除 tbody 中包含的所有内容 到目前为止我正在尝试 tbodyid empty HTML table tbody tr
  • 加载另一个 JS 脚本后加载

    这是我的代码 very big js file lots of html stuff 问题是 这些是异步加载的 有没有办法等待第二个脚本直到第一个脚本加载 如果您使用 jQuery 有一个非常简单的方法可以通过获取脚本 https api
  • ES6 模板文字的延迟执行

    我正在玩新的ES6 模板文字 http tc39wiki calculist org es6 template strings 我首先想到的是String format对于 JavaScript 所以我开始实现一个原型 String pro
  • 需要js、d3 和 nvd3 集成

    我面临整合的问题要求 questions tagged requirejs with d3 questions tagged d3 and nvd3 questions tagged nvd3 我找到了一个使用 require 的简单解决方
  • Express.js Passport认证自动失败跳过策略

    UPDATE 我已将代码从护照本地注册内部移至单独的处理程序 并且运行良好 问题在于 Passport 和本地注册的使用 但我不知道为什么 我使用 Node js Express Passport 进行身份验证和注册设置 这是以前使用过的标
  • Restangular - _.contains() 不是一个函数

    如果您最近通过 Bower 更新了 Restangular 它将安装最新的 Lodash 新的 4 0 然而 这是一个问题 因为 Restangular Angular 现在会抛出错误 contains 不是函数 你怎么解决 解决方案非常简

随机推荐

  • MySQL进阶语句

    目录 常用查询 order by按关键字排序 升序排序 降序排序 结合where进行条件过滤再排序 多字段排序 and or判断 and or 且与或的使用 嵌套 多条件使用 distinct 查询不重复记录 GROUP BY对结果进行分组
  • 经济,jiaxi

  • moviepy音视频开发:音频合成类CompositeAudioClip介绍

    前往老猿Python博文目录 CompositeAudioClip是AudioClip的直接子类 用于将几个音频剪辑合成为一个音频剪辑 CompositeAudioClip类只有一个构造方法 在构造方法内定义了一个内嵌函数make fram
  • 蓝屏错误代码分析和解决方法

    文字代码 可能的原因 可尝试的解决方法 0x00000001 APC INDEX MISMATCH 驱动出现问题 或安装了错误 不兼容的驱动 更新 重新安装相应设备官网的驱动 0x00000005 INVALID PROCESS ATTAC
  • VSCode的Pettier插件原理和设置

    最近写了一个 Prettier 插件 可以达到这样的效果 同事每次保存代码的时候 import 语句的顺序都会随机变 但是他去 prettier 配置文件里还啥也发现不了 于是就会一脸懵逼 那么这个同事发现了会打你的 prettier 插件
  • 在生信中利用Chat GPT/GPT4

    论文链接Ten Quick Tips for Harnessing the Power of ChatGPT GPT 4 in Computational Biology Papers With Code 之前在paper with cod
  • JAVA-JDK8的特性之Lambda表达式

    1 Lambda表达式 2 函数式接口 3 方法引用 4 Stream流 5 日期时间类 1 Lambda表达式 1 1 Lambda的由来 package demo01 public class Test01 public static
  • 从mpeg ts文件中提取I帧(1):将ts包拼装为section或pes包

    写在前面的话 不觉中已经在数码工作了十年有余 十年的青春 十年的汗水 如今即将离开 个中滋味难以言表 以后可能不会在广电行业工作了 就用这个小程序 为自己十年的广电工作画上一个句号吧 依旧是 版权没有 盗版不纠 欢迎转载 本程序的功能 提取
  • Linux中Crontab(定时任务)命令详解及使用教程

    Crontab介绍 Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中 用于设置周期性被执行的指令 该命令从标准输入设备读取指令 并将其存放于 crontab 文件中 以供之后读取和执行 该词来源于希
  • altium designer 画箭头

    一直在网上找如何在altium designer 中画箭头 没有结果 实然想到在AD的元件库中有不少元件是有箭头的 如果打开库文件 不就能看其属性了吗 于是选择Miscellaneous Devices IntLib打开做 试验 在打开时会
  • 萌新养成

    金三银四跳槽季 这个时候需要做好准备的可不仅仅只有在职或者离职的萝卜 尚未毕业的萌新也需要提早做准备了 毕竟把自己修炼成一个优秀的萝卜也不是一件容易的事 所以 放下你找对象 刷副本 世界游的想法 加入我们为你量身定制的人才培养计划 加入营长
  • lambda函数详解

    lambda函数的使用 捕获列表 常量性区别1 常量性区别2 lambda函数的实现 注意事项 lambda函数的使用 lambda函数的完整形式如下 capture parameters mutable gt return type st
  • K近邻估计

    Kn 近邻估计 KN近邻估计基本思想 预先确定n的某个函数Kn 然后再x点周围选择一个区域 调整区域体积大小 直至Kn个样本落入区域中 这些样本被称为点x的Kn个最近邻 如果x点附近的密度比较高 则V的体积自然就相对较小 从而可以提升分辨力
  • Maven下载与安装

    Maven下载 Maven官网 https maven apache org 进入官网 点击Download 可以看见4个文件 apache maven 3 8 7 bin tar gz是Linux版安装的 apache maven 3 8
  • 点云配准

    目录 一 点云配准概念 二 点云配准分类 1 无辅助的自动拼接 2 人工辅助标志点 三 配准常见流程 1 粗配准 2 精配准 1 奇异值分解求解 2 四元素求解旋转矩阵 参考文献 一 点云配准概念 由于三维扫描测量设备受测量方式的限制和被测
  • Qt中的QStringLiteral宏

    使用 QStringLiteral 宏可以在编译期把代码里的常量字符串 str 直接构造为 QString 对象 于是运行时就不再需要额外的构造开销了 如果编译器支持 则 QStringLiteral 宏在编译时从 str 生成一个 QSt
  • 计算机无法投影,电脑无法识别投影仪-电脑为什么检测不到投影仪,应该怎么安装...

    电脑无法识别投影仪 电脑为什么检测不到投影仪 应该怎么安装 投影仪销量排行
  • 【TensorFlow】卷积tf.nn.conv2d()函数使用解析 ( 附代码详解注释 )

    最近在研究学习TensorFlow 在做识别手写数字的demo时 遇到了tf nn conv2d这个方法 查阅了官网的API 发现讲得比较简略 还是没理解 google了一下 参考了网上一些朋友写得博客 结合自己的理解 差不多整明白了 方法
  • PyQt槽函数添加参数

    PyQt槽函数添加参数 这篇文章的前提是你得知道槽函数是啥 在这边我就不解释了 如果你是自定义信号 并且使用emit 方法进行发送的 那在emit里面就可以传入参数 这个懂得都懂 不懂得可以看一下这个大佬的文章link 他写的非常详细 如果
  • ES6-Map、Set与Arrary的转换

    Map与Array的转换 这个数组要是二维数组