📅  最后修改于: 2023-12-03 15:02:23.895000             🧑  作者: Mango
在 JavaScript 中,有些对象看起来像数组,但它们不符合 Array 类型的定义。这样的对象通常被称为“类数组”。常见的示例包括函数参数 arguments
和 DOM 集合(例如 querySelectorAll
)。
尽管类数组不是真正的数组,但我们可以通过一些方法将它们转换为数组。以下是两种常见的方法:
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
属性的对象。
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
方法来设置上下文对象。
以上是两种类数组转换为数组的方法。使用这些方法,您可以在不失去数据的情况下,将类数组引用的数据转换为数组,以便在结果中更轻松地进行迭代、修改和操作。