首页 > web前端 > js教程 > 正文

JavaScript 的 Array.from 方法如何将类数组对象转换为真实数组?

夢幻星辰
发布: 2025-09-28 10:25:02
原创
236人浏览过
类数组对象是具有length属性和数值键的非数组对象,如arguments、NodeList;Array.from通过读取length及索引值将其转为真数组,并支持可迭代对象与映射函数,常用于DOM操作或参数处理。

javascript 的 array.from 方法如何将类数组对象转换为真实数组?

Array.from 方法可以将类数组对象(array-like object)转换为真正的数组,主要通过读取对象的 length 属性,并根据索引从 0 到 length - 1 依次提取属性值,构造出一个新数组。

什么是类数组对象?

类数组对象是指具有 length 属性且属性名是数值型索引的对象,但不具备数组的内置方法如 push、pop 等。常见的例子包括函数内的 arguments 对象、DOM 的 NodeListHTMLCollection 等。

例如:

const arrayLike = {
  0: 'a',
  1: 'b',
  2: 'c',
  length: 3
};
登录后复制

Array.from 是如何工作的?

当调用 Array.from(arrayLike) 时,JavaScript 引擎会执行以下步骤:
  • 读取对象的 length 属性,确定新数组的长度
  • 从索引 0 开始,逐个读取对象中对应数字键的值
  • 将这些值按顺序放入一个新的数组实例中
  • 返回这个真实数组

示例:

const arrayLike = { 0: 'x', 1: 'y', length: 2 };
const arr = Array.from(arrayLike);
<p>console.log(arr);        // ['x', 'y']
console.log(Array.isArray(arr));  // true
登录后复制

支持可迭代对象和映射操作

Array.from 不仅适用于类数组对象,也适用于所有可迭代对象(如 Set、Map、字符串等)。它还可以接受第二个参数——映射函数,用于在转换过程中处理每个元素。

带映射函数的例子:

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人 44
查看详情 怪兽AI数字人

立即学习Java免费学习笔记(深入)”;

const arrayLike = { 0: 2, 1: 4, 2: 6, length: 3 };
const doubled = Array.from(arrayLike, x => x * 2);
<p>console.log(doubled);  // [4, 8, 12]
登录后复制

这相当于先生成数组 [2, 4, 6],然后对每个元素执行 x => x * 2

实际应用场景

在实际开发中,常用于处理 DOM 查询结果或函数参数:
  • 转换 NodeList: Array.from(document.querySelectorAll('div'))
  • 转换 arguments: 在非箭头函数中,Array.from(arguments) 可替代 Array.prototype.slice.call(arguments)
  • 字符串转字符数组: Array.from('hello') 得到 ['h', 'e', 'l', 'l', 'o']

基本上就这些。Array.from 提供了一种简洁、标准的方式,把看起来像数组的东西变成真正的数组,方便使用 map、filter 等方法。

以上就是JavaScript 的 Array.from 方法如何将类数组对象转换为真实数组?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号