hugh 的个人博客

JS类数组对象

一、特性

把一个具备数值类型的length属性及其值为非负整数的对象看做是一种类数组的对象

eg:

var o = {}
var i = 0;
for (var i=0;i<5;i++){
 o[i] = i;
}
o.length=i;//定义length属性
//使用类数组方式循环遍历
for(var j=0;j<o.length;j++){
 console.log(o[j]) 
}

二、判断类数组对象方法

function isArraylike(o){
  if(o && typeof o =="object" && isFinite(o.length) && o.length>0 && o.length ==Math.floor(o.length)&& o.length<4294967296) 
    return true;
  else 
    return false;
}

--4294967296 == 2^32

三、类数组对象转换成数组

var a = {length:2,0:1,1:2};
isArraylike({length:2,a:1,b:2})//true

var ac = Array.prototype.slice.call(a,0);

ac.length//2
ac.map(function(c){
return ++c;
})

--可使用Array对象中能返回数组的方式将类数组对象转换成数组,如slice,splice,map等

四、应用

1)遍历dom元素

var tags = document.getElementsByTagName("div");
isArraylike(tags);//true

var tagarr = Array.prototype.slice.call(tags)
tagarr.length


标题:JS类数组对象
作者:hugh0524
地址:https://blog.uproject.cn/articles/2016/06/23/1466650416595.html