JavaScript:将类数组转换成数组的几种方式

版权声明:本人原创文章,转载请注明出处 https://blog.csdn.net/qq_28766729/article/details/84030039

首先说说什么是类数组,类数组有几个组成部分:

  • 属性要为索引(数字)。
  • 必须有length属性,
  • 最好加上push和splice方法

对于一个普通的对象来说,如果它的所有property名均为正整数,同时也有相应的length属性,那么虽然该对象并不是由Array构造函数所创建的,它依然呈现出数组的行为,在这种情况下,这些对象被称为类数组对象

类数组的length属性会随着数组成员的增减而发生变化,同时又从Array构造函数中继承了一些用于进行数组操作的方法。

var obj = {
    "0" : 'a',
    "1" : 'b',
    "2" : 'c',
    "length" : 3,
    "push" : Array.prototype.push,
    "splice" : Array.prototype.splice
}

前面已经说了,类似数组的对象,本质特征只有一点,即必须有length属性。因此,任何有length属性的对象,都可以通过Array.from方法转为数组。

let arrayLike = {
    '0' : 'a',
    '1' : 'b',
    '2' : 'c',
    length : 3
};
let arr1 = Array.prototype.slice.call(arrayLike);
let arr2 = [].slice.call(arrayLike);
let arr3 = Array.from(arrayLike);

注意

在浏览器环境中,document.getElementsByTagName()语句返回的就是一个类数组对象。

在function调用中,function代码内的arguments变量(保存传入的参数)也是一个类数组对象。

猜你喜欢

转载自blog.csdn.net/qq_28766729/article/details/84030039