JavaScript的Array.from方法是什么?如何使用?

来源:个人站长网作者:松本一香头衔:网络博主
导读:本期聚焦于小伙伴创作的《JavaScript的Array.from方法是什么?如何使用?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《JavaScript的Array.from方法是什么?如何使用?》有用,将其分享出去将是对创作者最好的鼓励。

JavaScript的Array.from方法是ES6新增的数组静态方法,主要作用是将类数组对象或者可迭代对象转换为真正的数组实例,同时还支持在转换过程中对每个元素进行映射处理,是前端开发中处理数据转换的常用工具。

JavaScript的Array.from方法是什么?如何使用?

Array.from方法的基本定义

Array.from是挂载在Array构造函数上的静态方法,它的核心功能是将传入的类数组对象或者可迭代对象,转换成一个新的数组返回。和扩展运算符相比,Array.from可以处理更广泛的类数组场景,并且自带映射处理的能力。

方法参数说明

Array.from方法接收两个参数,语法格式如下:

Array.from(arrayLike[, mapFn[, thisArg]])
  • arrayLike:必填参数,需要转换的类数组对象或者可迭代对象,比如函数的arguments对象、DOM集合NodeList、字符串、Set、Map等。
  • mapFn:可选参数,映射函数,会在每个元素被添加到新数组之前执行,作用和数组的map方法类似。
  • thisArg:可选参数,执行mapFn函数时this的指向。

常见使用场景与示例

1. 转换类数组对象

类数组对象是指具有length属性,且属性名是数字索引的对象,比如函数的arguments对象,这类对象本身没有数组的方法,通过Array.from可以快速转为数组。

function sum() {
    // arguments是类数组对象,没有数组的reduce方法,先转为数组
    const args = Array.from(arguments);
    return args.reduce((acc, cur) => acc + cur, 0);
}
console.log(sum(1, 2, 3)); // 输出6

2. 转换可迭代对象

字符串、Set、Map等可迭代对象都可以通过Array.from转为数组,比如将字符串拆分成单个字符的数组:

const str = 'hello';
const strArr = Array.from(str);
console.log(strArr); // 输出["h", "e", "l", "l", "o"]

再比如将Set结构转为数组,实现数组去重:

const arr = [1, 2, 2, 3, 3, 4];
const uniqueArr = Array.from(new Set(arr));
console.log(uniqueArr); // 输出[1, 2, 3, 4]

3. 结合映射函数处理元素

传入mapFn参数可以在转换的同时对每个元素进行处理,不需要额外调用map方法,比如将类数组的数字元素翻倍:

const arrayLike = {0: 1, 1: 2, 2: 3, length: 3};
const newArr = Array.from(arrayLike, item => item * 2);
console.log(newArr); // 输出[2, 4, 6]

4. 生成指定长度的数组

结合Array.from的第二个参数,可以生成指定长度且带有初始值的数组,比如生成一个长度为5,每个元素都是0的数组:

const arr = Array.from({length: 5}, () => 0);
console.log(arr); // 输出[0, 0, 0, 0, 0]

注意事项

  • 如果传入的arrayLike参数没有length属性,也不是可迭代对象,那么会返回一个空数组。
  • 当arrayLike是类数组对象时,会按照索引从0到length-1的顺序读取属性值,不存在的索引对应的值会是undefined。
  • Array.from是浅拷贝,如果原对象中的元素是引用类型,新数组中的元素会指向同一个引用地址。

需要注意的是,Array.from和扩展运算符...都能实现可迭代对象转数组,但扩展运算符无法处理没有部署迭代器的类数组对象,而Array.from可以处理所有类数组对象,在处理arguments、NodeList等场景时更通用。

JavaScriptArray.from类数组对象可迭代对象数组转换修改时间:2026-06-11 06:24:24

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。