当前位置: 首页 > news >正文

ECMAScript的`Array.from()`:将可迭代对象转换为数组的利器

在ECMAScript 2015(ES6)中,Array.from()方法为数组的创建提供了一种新的途径。这个方法可以将类数组对象或可迭代对象转换成一个新的、真正的数组。本文将详细探讨Array.from()的用途,并提供代码示例来展示其功能。

Array.from()方法简介

Array.from()方法接受一个可迭代或类数组对象作为参数,并返回一个由该对象的元素组成的新数组。

语法:

Array.from(arrayLike[, mapFn[, thisArg]])
  • arrayLike:一个类数组对象。
  • mapFn(可选):一个映射函数,用于对每个元素进行处理。
  • thisArg(可选):映射函数的执行上下文。
用途和优势
  1. 转换类数组对象:将具有length属性和整数索引的类数组对象转换为数组。
  2. 转换可迭代对象:将可迭代对象(如MapSet等)转换为数组。
  3. 提供映射功能:在转换的同时,可以对元素进行处理。
代码示例
将类数组对象转换为数组
const arrayLike = { 0: 'a', 1: 'b', 2: 'c', length: 3 };
const arr = Array.from(arrayLike);
console.log(arr); // 输出:[ 'a', 'b', 'c' ]
Map对象转换为数组
const map = new Map([['key1', 'value1'], ['key2', 'value2']]);
const arr = Array.from(map);
console.log(arr); // 输出:[ [ 'key1', 'value1' ], [ 'key2', 'value2' ] ]
Set对象转换为数组
const set = new Set([1, 2, 3, 4, 5]);
const arr = Array.from(set);
console.log(arr); // 输出:[ 1, 2, 3, 4, 5 ]
使用映射功能
const arrayLike = { 0: 1, 1: 2, 2: 3, length: 3 };
const arr = Array.from(arrayLike, x => x * x);
console.log(arr); // 输出:[ 1, 4, 9 ]
结论

Array.from()方法是一个多功能的工具,它不仅可以将类数组对象和可迭代对象转换为数组,还可以在转换过程中对元素进行映射处理。这使得Array.from()成为ECMAScript中处理数组和类似数组结构的不可或缺的方法之一。通过使用Array.from(),开发者可以编写出更加简洁、灵活且功能强大的代码。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java解析压缩包,并根据指定文件夹上传文件
  • python两大编程思想,类和对象,实例变量类变量,静态方法与实例方法和类方法,给对象动态绑定属性和函数
  • 老外说“You‘re a fat cat”是什么意思?你是只肥猫?错得离谱!柯桥学英语口语到银泰广场
  • 团结引擎发布1.2.3版本更新
  • zdpgo_cobra_req 新增解析请求体内容
  • 电脑屏幕录制指南,2024四大免费录屏软件推荐!
  • 猫头虎 分享已解决Bug || ImportError: No module named ‘django‘ 解决方案
  • 配置ssh密钥登录Redhat Linux(Putty,xshell)
  • 数据库管理-Redis
  • VS2022 C++ EasyX EGE 吃豆人升级版
  • 白骑士的Matlab教学进阶篇 2.5 Simulink
  • C语言 ——— 在杨氏矩阵中查找具体的某个数
  • IT管理:我与IT的故事1--努力是成功的序曲
  • Redis缓存配置
  • 大数据治理平台建设与应用解决方案(41页PPT)
  • 4. 路由到控制器 - Laravel从零开始教程
  • angular2 简述
  • Druid 在有赞的实践
  • golang中接口赋值与方法集
  • input的行数自动增减
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Travix是如何部署应用程序到Kubernetes上的
  • 程序员最讨厌的9句话,你可有补充?
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何合理的规划jvm性能调优
  • 微信小程序--------语音识别(前端自己也能玩)
  • ionic入门之数据绑定显示-1
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (翻译)terry crowley: 写给程序员
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (七)c52学习之旅-中断
  • (十)T检验-第一部分
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)、python程序--模拟电脑鼠走迷宫
  • (转)VC++中ondraw在什么时候调用的
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • . NET自动找可写目录
  • .ai域名是什么后缀?
  • .gitignore不生效的解决方案
  • .gitignore文件_Git:.gitignore
  • .Net 8.0 新的变化
  • .Net Core中Quartz的使用方法
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .sh 的运行
  • /etc/fstab和/etc/mtab的区别
  • @javax.ws.rs Webservice注解
  • [BetterExplained]书写是为了更好的思考(转载)
  • [BZOJ] 2044: 三维导弹拦截