类数组定义

书面有这么一句定义来阐述类数组对象:只包含使用从零开始,且自然递增的整数做键名,并且定义了length表示元素个数的对象,我们就认为它是类数组对象。

var array = ['zhangsan', 'lisi', 'zhaoliu'];

var arrayLike = {
    0: 'zhangsan',
    1: 'lisi',
    2: 'zhaoliu',
    length: 3
}

arrarLike 就是一个类数组,与数组相似,他的数据获取与设定可以通过序号进行,但是类数组没有数组的其他功能,例如push,map等

类数组与数组的转化

// 1. slice
Array.prototype.slice.call(arrayLike); // ["name", "age", "sex"] 

// 2. splice
Array.prototype.splice.call(arrayLike, 0); // ["name", "age", "sex"] 

// 3. ES6 Array.from
Array.from(arrayLike); // ["name", "age", "sex"] 

// 4. concat
Array.prototype.concat.apply([], arrayLike)

// 5 ES6 ...运算符 作为函数参数的时候可以吧arguments转换成数组
function translateArray(...arguments) {
    // ...
}
第五种仿佛需要注意的是,使用个方法的数据结构必须有遍历器接口,并不是所有的类数组都能使用,一般就是arguments可以使用

一般使用from将类数组转化为数组

常见的类数组是arguments,通常可以使用...arguments将类数组转化为数组