一、什么是类数组?
类数组:不是数组,能够通过下标访问到属性,并且有length属性;
所以类数组必须有以下几个组成部分:
- 属性要为“索引(数字)属性”;
- 必须有length 属性
例如:
let obj = {
"0" : 'a',
"1" : 'b',
"2" : 'c',
length : 3
}
常见的类数组有:
- 函数里的参数对象arguments;
- 用getElementsByTagName/ClassName/Name获得的HTMLCollection;
- 用querySelector获得的 NodeList;
二、常用类数组转数组方法
1、es6语法 Array.form(arr)
let obj = {
"0" : 'a',
"1" : 'b',
"2" : 'c',
length : 3
}
Array.form(obj) // ['a','b','c']
2、Array.prototype.slice.call(obj)或者 [].slice.call(obj)
let obj = {
"0" : 'a',
"1" : 'b',
"2" : 'c',
length : 3
}
Array.prototype.slice.call(obj) // ['a', 'b', 'c']
[].slice.call(obj) // ['a', 'b', 'c']
3、es6扩展运算符
function test(){
return [...arguments]; // [1,2,4]
}
test(1,2,4);