MST

星途 面试题库

面试题:JavaScript中创建数组的创新方法应用

在JavaScript中,除了常规的`[]`和`new Array()`方式创建数组,有一种创新方法是使用`Array.from()`。请说明`Array.from()`的用法,并举例将一个类似数组的对象(如`{0: 'a', 1: 'b', length: 2}`)转换为真正的数组。同时解释这种方法相比传统方法在某些场景下的优势。
26.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

Array.from()用法

Array.from() 方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。它接受三个参数:

  1. arrayLike:必选,想要转换成数组的伪数组对象或可迭代对象。
  2. mapFn(可选):如果指定了该参数,新数组中的每个元素会执行该回调函数。
  3. thisArg(可选):执行回调函数 mapFnthis 对象。

示例

{0: 'a', 1: 'b', length: 2} 转换为真正的数组:

const obj = {0: 'a', 1: 'b', length: 2};
const arr = Array.from(obj);
console.log(arr); 
// 输出: ['a', 'b']

相比传统方法的优势

  1. 处理类数组对象:传统的 []new Array() 无法直接将类数组对象(如 DOM 元素集合 document.querySelectorAll 返回的结果)转换为数组。而 Array.from() 可以轻松做到,使得操作类数组对象更加方便。
  2. 映射转换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]
  1. 可迭代对象处理:对于可迭代对象(如 SetMap),Array.from() 提供了简洁的转换方式,同时保留可迭代对象的特性进行操作。