1》伪数组例子
函数的 argument参数,像调用getElementsByTagName,document.childNodes之类的,它们都返回 NodeList对象都属于伪数组。
2》如何判断数据是不是伪数组
是对象,有length不为0,值必须是number类型,这个对象还得按照下标存储数据
3》将伪数组转化为标准数组
方法一:声明一个空数组,通过遍历伪数组把它们重新添加到新的数组中
var aLi = document.querySelectorAll('li');
var arr = [];
for (var i = 0; i < aLi.length; i++) { arr[arr.length] = aLi[i]}
方法二:使用数组的slice()方法 它返回的是数组,使用call或者apply指向伪数组 (IE8以及更早版本除外,因为IE8及更早版本以前将NodeList实现为一个对象)
var arr = Array.prototype.slice.call(aLi);
所有浏览器都可以运行
function convertToArray(nodes){
var array=null;
try{
array=Array.prototype.slice.call(nodes,0)
}catch(ex){
array=new Array();
for(var i=0,len=nodes.length;i<len;i++){
array.push(nodes[i])
}
}
return array;
}
方法三:ES6中数组的新方法Array. from()
function test(){
var arg = Array.from(arguments);
arg.push(5);
console.log(arg);//1,2,3,4,55 6 }
test(1,2,3,4);
方法四:任何Interator接口的对象都可以用扩展运算符转为真正的数组
[...document.querySelectorAll("div")]//可遍历的对象转换成真正的数组