面试题答案
一键面试Array.from()
用法
Array.from()
方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。它接受三个参数:
arrayLike
:必选,想要转换成数组的伪数组对象或可迭代对象。mapFn
(可选):如果指定了该参数,新数组中的每个元素会执行该回调函数。thisArg
(可选):执行回调函数mapFn
时this
对象。
示例
将 {0: 'a', 1: 'b', length: 2}
转换为真正的数组:
const obj = {0: 'a', 1: 'b', length: 2};
const arr = Array.from(obj);
console.log(arr);
// 输出: ['a', 'b']
相比传统方法的优势
- 处理类数组对象:传统的
[]
和new Array()
无法直接将类数组对象(如 DOM 元素集合document.querySelectorAll
返回的结果)转换为数组。而Array.from()
可以轻松做到,使得操作类数组对象更加方便。 - 映射转换:
Array.from()
可以在转换过程中使用mapFn
进行映射操作,直接生成符合需求的数组,而无需先转换为数组再使用map
方法。例如:
const obj = {0: 1, 1: 2, length: 2};
const newArr = Array.from(obj, num => num * 2);
console.log(newArr);
// 输出: [2, 4]
- 可迭代对象处理:对于可迭代对象(如
Set
、Map
),Array.from()
提供了简洁的转换方式,同时保留可迭代对象的特性进行操作。