什么是伪数组(类数组)?
参考答案:
伪数组是指具有数组部分特性的对象,它可以像数组一样按索引访问元素和获取 length 属性,但本质上并不是 Array 实例,因而不具备数组的方法(如 push、pop 等)。
特点
- 具有
length属性:伪数组对象包含一个length属性,表示其中的元素数量。 - 可以按索引访问:伪数组中的元素可以像数组一样通过索引访问,如
obj[0]、obj[1]等。 - 不继承数组的原型方法:伪数组不继承
Array.prototype上的方法,因此无法直接调用数组的方法。
常见的伪数组对象
在 JavaScript 中,常见的伪数组包括:
arguments对象:在函数中,可以通过arguments访问传入的参数,arguments是伪数组。- DOM 方法返回的
NodeList、HTMLCollection:例如document.querySelectorAll()返回的结果就是NodeList,属于伪数组。 字符串:严格来说,字符串也具有伪数组特性,因为它们支持按索引访问和length属性。
转换伪数组为数组
因为伪数组没有数组的方法,通常需要将它们转换为真正的数组。常见的转换方法有以下几种:
使用
Array.from()javascriptfunction example() { const argsArray = Array.from(arguments); console.log(argsArray); // [1, 2, 3] } example(1, 2, 3);使用扩展运算符
...javascriptfunction example() { const argsArray = [...arguments]; console.log(argsArray); // [1, 2, 3] } example(1, 2, 3);使用
Array.prototype.slice.call()javascriptfunction example() { const argsArray = Array.prototype.slice.call(arguments); console.log(argsArray); // [1, 2, 3] } example(1, 2, 3);
题目要点:
伪数组是指具有数组部分特性的对象,它可以像数组一样按索引访问元素和获取 length 属性,但本质上并不是 Array 实例,因而不具备数组的方法(如 push、pop 等)。
通过适当的转换,开发者可以像操作数组一样方便地使用这些数据。