array.from 是 javascript 中将类数组或可迭代对象转为数组的方法,支持映射处理和 this 绑定;可转换 nodelist、字符串、set 等,能生成空数组、执行映射、绑定上下文,但要求源对象有 length 和数字索引。

Array.from 是 JavaScript 中专门用于将类数组对象(如 arguments、NodeList)或可迭代对象(如 Set、Map、String)转换为真正数组的方法。它比扩展运算符([...iterable])更灵活,支持映射处理和 this 绑定。
基本用法:转成普通数组
只需传入一个类数组或可迭代对象即可:
-
Array.from(document.querySelectorAll('div'))→ 把NodeList转为数组,可直接调用map、filter -
Array.from('hello')→ 得到['h', 'e', 'l', 'l', 'o'],字符串按字符拆分 -
Array.from(new Set([1, 2, 3]))→ 去重后转为数组[1, 2, 3] -
Array.from({length: 3})→ 创建长度为 3 的空数组[undefined, undefined, undefined]
带映射函数:边转边处理
第二个参数是一个映射函数,类似 Array.prototype.map,但会在转换过程中执行:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
Array.from('123', x => Number(x))→[1, 2, 3] -
Array.from({length: 4}, (_, i) => i * 2)→[0, 2, 4, 6](下标作为计算依据) -
Array.from(document.querySelectorAll('input'), el => el.value)→ 直接提取所有 input 的值组成数组
指定 this 值:控制映射函数中的上下文
第三个参数可传入 thisArg,用于绑定映射函数内部的 this:
-
const helper = { scale: 10 }; Array.from([1, 2], function(x) { return x * this.scale; }, helper)→[10, 20] - 箭头函数无法通过该参数改变
this,因为它不绑定this
注意点和常见误区
不是所有“像数组”的对象都能被正确转换:
- 必须有
length属性且索引为数字键,否则可能得到空数组或意外结果 -
Array.from(null)或Array.from(undefined)会报错,需提前校验 - 普通对象(如
{0: 'a', 1: 'b', length: 2})可以转,但{a: 1, b: 2}不行——没有数字索引和length - 与扩展运算符不同,
Array.from可以处理只有length没有实际元素的对象(如{length: 3}),生成稀疏数组
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










