Skip to content

什么是伪数组和类数组?

Posted on:2024年8月22日 at 10:55

伪数组(Pseudo-array)和类数组(Array-like)是描述具有类似数组结构的对象的术语,虽然它们并不是真正的数组。它们通常具有下列特性:

伪数组(Pseudo-array)

伪数组指的是一种对象,它看起来像数组,因为它具有索引属性和 length 属性,但并不具备数组的所有方法(如 push, pop, forEach)。伪数组的关键特征包括:

类数组(Array-like)

类数组是指任何具有 length 属性和索引属性的对象,这些对象看起来像数组,但并不真正是数组。类数组对象可以是:

示例

HTMLCollection(类数组)

const elements = document.getElementsByTagName("div");
console.log(elements instanceof Array); // false
console.log(elements.length); // 结果为 div 元素的数量
console.log(elements[0]); // 第一个 div 元素

函数的 arguments 对象(伪数组)

function example() {
  console.log(arguments instanceof Array); // false
  console.log(arguments.length); // 参数个数
  console.log(arguments[0]); // 第一个参数
}
example(1, 2, 3);

区别

转换为真正的数组

可以使用 Array.from() 或扩展运算符(spread operator)将伪数组或类数组转换为真正的数组:

使用 Array.from()

const array = Array.from(arguments);

使用扩展运算符

const array = [...arguments];
原文转自:https://fe.ecool.fun/topic/51b79c37-fdda-46fe-9c79-4f2ac7a09206