JavaScript-Array.from

Array.from() 是 JavaScript 中用于将类数组对象(array-like)或可迭代对象(iterable)转换为真实数组的一个非常有用的方法。


📌 一、基本语法

Array.from(arrayLike, mapFn?, thisArg?)

参数说明:

参数类型描述
arrayLike对象一个类数组对象或可迭代对象(如字符串、Map、Set、DOM NodeList 等)
mapFn函数(可选)类似于 map() 的回调函数,用于对每个元素进行处理
thisArg任意值(可选)执行 mapFn 时使用的 this

✅ 二、作用详解

1. 把类数组对象转成数组

类数组对象:有 length 属性,并可以通过索引访问元素,但没有数组的方法(如 push, slice 等)

示例:
const arrayLike = {0: 'a',1: 'b',2: 'c',length: 3
};const arr = Array.from(arrayLike);
console.log(arr); // ['a', 'b', 'c']

2. 把字符串转成字符数组

Array.from('hello'); 
// 输出: ['h', 'e', 'l', 'l', 'o']

相比 str.split('')Array.from() 更适合处理带 Unicode 字符的字符串。


3. 把 Set / Map 转成数组

const set = new Set([1, 2, 3]);
Array.from(set); // [1, 2, 3]const map = new Map([['a', 1], ['b', 2]]);
Array.from(map); // [['a', 1], ['b', 2]]

4. 把 arguments 对象转成数组(ES5 中常用)

function example() {return Array.from(arguments);
}
example(1, 2, 3); // [1, 2, 3]

5. 结合 DOM NodeList 使用

const divs = document.querySelectorAll('div');
const divArray = Array.from(divs);
divArray.forEach(div => console.log(div));

🔁 三、使用 mapFn 映射处理

你可以在创建数组的同时,对每个元素进行映射处理,相当于:

Array.from(obj, x => fn(x))
示例:
Array.from({ length: 5 }, (_, i) => i * 2);
// 输出: [0, 2, 4, 6, 8]

这个用法非常适合用来生成数字序列、初始化数组等场景。


🧪 四、实用技巧示例

1. 生成指定长度的数字数组(从0开始)

Array.from({ length: 5 }, (_, i) => i);
// [0, 1, 2, 3, 4]

2. 生成随机数数组

Array.from({ length: 5 }, () => Math.floor(Math.random() * 100));
// 示例输出: [23, 78, 11, 45, 90]

3. 去重并转成数组

const str = 'abacdef';
Array.from(new Set(str)); // ['a', 'b', 'c', 'd', 'e', 'f']

🆚 五、与 Array.prototype.slice.call() 的区别

在 ES5 中我们经常这样把类数组转成数组:

Array.prototype.slice.call(arrayLike);

但在 ES6 中,推荐使用更简洁、语义更强的:

Array.from(arrayLike);

📝 总结

特性Array.from()
输入类型类数组、可迭代对象
是否改变原数组❌ 不会修改原数组
是否返回新数组✅ 返回一个新的数组
支持 .map() 式处理✅ 支持 mapFn 回调
兼容性✅ 大多数现代浏览器都支持(IE 不支持)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/83351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二刷苍穹外卖 day02

新增员工 DTO 将前端传递的参数列表通过对应的实体类接收 当前端提交的数据和实体类中对应的属性差别较大时,使用DTO来封装数据 Data public class EmployeeDTO implements Serializable {private Long id;private String username;private String name;private…

通过Heron Handoff 插件我们在figma设计中可以像sketch导出离线标注

一、设计交付的历史困境与破局契机 在数字产品开发的全流程中,设计标注的高效传递始终是连接创意与实现的关键纽带。传统设计工具如 Sketch 凭借 Bluebeam、Sketch Measure 等插件构建了成熟的离线标注体系,设计师可将标注文件打包交付,开发…

SSE 数据的传输无法流式获取

问题 调试过程中发现SSE数据返回的时间都是一样的,怀疑是接口问题。 参考 EventSource数据一次性出来,并未流式输出的原因_sourceevent为什么结果一下全部返回了-CSDN博客 处理 EventStream 不能流式返回的问题:Nginx 配置优化 解决方案 …

markdown文本转换时序图

好久没更新了~这篇是markdown文本转换时序图的常用方法 文章目录 前言一、Mermaid语法示例二、PlantUML语法示例三、在线工具快速转换总结 前言 使用专业工具如Mermaid或PlantUML可以直接在Markdown中绘制时序图。这些工具支持简洁的语法,生成可嵌入文档的图表&…

谷粒商城-分布式微服务 -集群部署篇[一]

十九、k8s 集群部署 19.1 k8s 快速入门 19.1.1 简介 Kubernetes 简称 k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。 中文官网 中文社区 官方文档 社区文档 概述 | Kubernetes 传统部署时代: 早期,各个组织是在物理服务器上…

微信小程序- 用canvas生成排行榜

设计功能不是很复杂,也不想用插件,最终出现现在版本,主要用到微信小程序 wx.canvasToTempFilePath方法 // 直接调用改方法 createQRCode() {const qrCodeCanvasId "qrcodeCanvas";drawQrcode({width: 200,height: 200,canvasId: …

深度剖析:UI 设计怎样为小程序构建极致轻量体验

内容摘要 在小程序的世界里,用户都追求快速、便捷的轻量体验。但你是否好奇,为啥有些小程序能让人轻松上手,快速达成目标,而有些却让人感觉繁琐、卡顿?这里的关键差异,往往就藏在 UI 设计中。UI 设计到底施…

【网络安全】Qt免杀样本分析

初步研判 SHA256:9090807bfc569bc8dd42941841e296745e8eb18b208942b3c826b42b97ea67ff 我们可以看到引擎0检出,是个免杀样本,不过通过微步云沙箱的行为分析,已经被判为恶意 行为分析 进程行为 可以看到demo显示调用了winver获…

window 显示驱动开发-如何查询视频处理功能(六)

D3DDDICAPS_FILTERPROPERTYRANGE请求类型 UMD 返回指向 DXVADDI_VALUERANGE 结构的指针,该结构包含传递D3DDDICAPS_FILTERPROPERTYRANGE请求类型时特定视频流上特定筛选器设置允许的值范围。 Direct3D 运行时在D3DDDIARG_GETCAPS的 pInfo 成员指向的变量中为特定视…

Oracle线上故障问题解决

----重启电脑找不到sid Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor Could not open connection sqlplus "/as sysdba" SQL> shutdown immediate 数据库…

语音信号处理三十——高效多相抽取器(Polyphase+Noble)

文章目录 前言一、Polyphase 多项分解1.定义2.拆分公式3.推导过程1)按模 M M M拆分求和项2)提取因子 4.总结 二、Noble恒等式1. 定义2.Noble恒等式表达方式1)抽取系统的 Noble 恒等式2)插值系统的 Noble 恒等式 2.Nodble恒等式推导…

广告推荐系统中模型训练中模型的结构信息、Dense数据、Sparse数据

下面结合广告推荐系统常见的深度学习模型(比如 Wide & Deep、DeepFM、Two-Tower 等),介绍一下“模型的结构信息”、Dense 数据和 Sparse 数据在训练过程中的角色及处理方式。 模型结构信息 输入层(Input Layer) • Sparse 输入:各类离散高维特征(用户 ID、广告 ID、…

安全生产管理是什么?安全生产管理主要管什么?

安全生产管理是什么?安全生产管理主要管什么? 不管是制造业、建筑业,还是仓储、物流、化工等等,一聊到“安全事故”,大家脑子里最先冒出来的两个词,肯定就是: 人的不安全行为物的不安全状态 …

SecureRandom.getInstanceStrong() 与虚拟机的爱恨情仇

问题描述 使用Ruoyi-cloud 二开,将服务部署到虚拟机上后,准备登录,发现验证码一致加载不出来,接口请求超时! 解决步骤 telnet 虚拟机ipport 发现可以通.curl 接口,发现一致不返回,超时了./code 接口超时&am…

DEM 地形分析与水文建模:基于 ArcGIS 的流域特征提取

技术点目录 一、 GIS理论及ArcGIS认识二、ArcGIS数据管理与转换三、ArcGIS地图制作与发布四、ArcGIS数据制备与编辑五、ArcGIS矢量空间分析及应用六、ArcGIS栅格空间分析及应用七、ArcGIS空间插值及应用八、DEM数据与GIS三维分析九、ArcGIS高级建模及应用十、综合讲解了解更多 …

芯伯乐XBLW GT712选型及应用设计指南

前言 在电子工程领域,精准的电流测量对于众多电路设计与系统监控至关重要。芯伯乐推出的XBLW GT712电流传感器以其独特的优势,成为工程师在诸多应用中的首选工具。本文将深入剖析XBLW GT712的工作原理、性能特点以及应用要点,为工程师提供详…

MySQL查看连接情况

说明:本文介绍如何查看MySQL会话连接情况,方便排查MySQL占用CPU过高或其他问题。 连接数据库 首先,使用命令行连接到MySQL数据库 mysql -u[用户名] -p[密码] -h[主机IP] -P[端口号]如果MySQL就在本机上,那么如下即可 mysql -u…

图文教程——Deepseek最强平替工具免费申请教程——国内edu邮箱可用

亲测有效!只需 4 步即可免费体验最新最强的 AI 助手! 最强AI助手 This account isn’t eligible for Google AI Pro plan Google AI Pro plan isn’t available in some countries or for people under a certain age. 问题终极解决方案: ht…

java转PHP开发需要几步?

PHP基础入门指南(面向Java开发者) 作为Java开发者,你已经掌握了面向对象编程、变量类型和控制结构等核心概念,这将大大加速你学习PHP的过程。下面我将从语法差异和PHP特性两个方面,帮助你快速上手PHP开发。 语法差异…

一种使用 PowerToys 的键盘管理器工具重新映射按键实现在 Windows 上快捷输入字符的方式

文章目录 一、问题背景二、安装 PowerToys三、配置快捷键 一、问题背景 在之前的一篇文章中介绍了使用 Java 程序实现快捷键输入字符的方式(https://blog.csdn.net/TeleostNaCl/article/details/148158298),其原理是利用 后台常驻的 Java 应…