值得一看
广告
彩虹云商城
广告

热门广告位

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

类数组对象是具有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、字符串等)。它还可以接受第二个参数——映射函数,用于在转换过程中处理每个元素。

带映射函数的例子:

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

怪兽AI数字人

怪兽AI数字人

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

怪兽AI数字人44

查看详情
怪兽AI数字人

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 java html node 可迭代对象 JavaScript Array Object Filter 字符串 Length map 对象 dom prototype

大家都在看:

JavaScript的反射元编程如何实现AOP切面?
如何利用JavaScript的垃圾回收机制优化应用的内存使用?
JavaScript代码分割与懒加载策略
在JavaScript中,如何实现数据的加密、解密和哈希运算?
JavaScript:高效提取HTML脚本标签src属性的DOM解析方法
温馨提示: 本文最后更新于2025-09-28 10:40:31,某些文章具有时效性,若有错误或已失效,请在下方留言或联系在线客服
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞13赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容