📜  js 将数组数组转换为数组 - Javascript (1)

📅  最后修改于: 2023-12-03 15:02:23.895000             🧑  作者: Mango

用 JavaScript 将类数组转换为数组

在 JavaScript 中,有些对象看起来像数组,但它们不符合 Array 类型的定义。这样的对象通常被称为“类数组”。常见的示例包括函数参数 arguments 和 DOM 集合(例如 querySelectorAll)。

尽管类数组不是真正的数组,但我们可以通过一些方法将它们转换为数组。以下是两种常见的方法:

1. 转换为 Array 的方法
const arrayLike = { 0: 'a', 1: 'b', 2: 'c', length: 3 };

const arr = Array.from(arrayLike);
// 或者
// const arr = [...arrayLike];

console.log(arr); // ['a', 'b', 'c'];

上面的代码展示了两种方法:Array.from 和扩展运算符 ...。这两种方法都将类数组转换为数组,但 Array.from 更通用,因为它可以处理具有 Symbol.iterator 属性的任何对象,而扩展运算符只能处理带有 length 属性的对象。

2. 使用 slice 方法
const arrayLike = { 0: 'a', 1: 'b', 2: 'c', length: 3 };

const arr = Array.prototype.slice.call(arrayLike);
// 或者
// const arr = [].slice.call(arrayLike);

console.log(arr); // ['a', 'b', 'c'];

上面的代码使用了 Array.prototype.slice 方法,并使用 call 方法将 arrayLike 对象绑定到 Array.prototype.slice 中。由于 slice 方法只能应用于数组,因此必须使用 call 方法来设置上下文对象。

以上是两种类数组转换为数组的方法。使用这些方法,您可以在不失去数据的情况下,将类数组引用的数据转换为数组,以便在结果中更轻松地进行迭代、修改和操作。