数组轮回
数组轮回要领:for
轮回,forEach()
,for/in
。
一、for
轮回
1.运用Object.keys()
参数为对象,返回一个数组,为对象属性名的鸠合(不可罗列的除外)。IE8+
,然后运用for
轮回获得对象的值的鸠合。
var o={a:1,b:2,c:3};
Object.defineProperty(o,"c",{ //使o中的属性c不可罗列
enumerable:false
});
var keys=Object.keys(o);//获得o中的属性名的鸠合,keys为一个数组,不可罗列的不能遍历
var arr=[];
for(var i=0,len=keys.length;i<len;i++){
arr.push(o[keys[i]]);
}
arr;//1,2 获得o中可罗列的属性的值的鸠合
2.过滤数组中为undefined
,null
,NaN
,""
,false
,和不存在的元素(希罕数组中有不存在的元素)
var arr=[1,2,3,,undefined,null,"",false,NaN];
var p=[];
for(var i=0,len=arr.length;i<len;i++){
if(!arr[i]) continue;
p.push(arr[i]);
}
p;//1,2,3
3.在希罕数组中过滤掉不存在的元素
var arr=[undefined,1,2,3,,null,"",false,NaN];
var p=[];
for(var i=0,len=arr.length;i<len;i++){
if(arr[i]===undefined && !(i in arr)) continue;
p.push(arr[i]);
}
p;//undefined,1,2,3,null,"",false,NaN
4.在数组中过滤null
元素
var arr=[undefined,1,2,3,,"",null,false,NaN];
var p=[];
for(var i=0,len=arr.length;i<len;i++){
if(arr[i]===null) continue;
p.push(arr[i]);
}
p;//undefined,1,2,3,,"",false,NaN
5.在数组中过滤为undefined
的元素
var arr=[undefined,1,2,3,,"",null,false,NaN];
var p=[];
for(var i=0,len=arr.length;i<len;i++){
if(arr[i]===undefined) continue;
p.push(arr[i]);
}
p;//1,2,3,"",null,false,NaN
二、for/in
1.运用for/in
过滤掉不可罗列的元素
var arr=[1,2,3,4];
var p=[];
Object.defineProperty(arr,"3",{ //使索引为3,即属性名为"3"不可罗列
enumerable:false
});
for(var i in arr){
p.push(arr[i]);
}
p;//1,2,3
1.运用for/in
罗列属性
Array.prototype.run=function(){ //run()返回实例数组索引为0的元素
return this["0"];
};
var arr=[1,2,3];
var p=[];
for(var i in arr){
p.push(i);
}
p;//0,1,2,3 这里0,1,2,3是arr里的索引,arr被罗列了4个元素包含继续属性run
1.运用for/in
过滤继续属性
Array.prototype.run=function(){ //run()返回实例数组索引为0的元素
return this["0"];
};
var arr=[1,2,3];
var p=[];
for(var i in arr){
if(!arr.hasOwnProperty(i)) continue;
p.push(i);
}
p;//0,1,2只罗列了3个属性,过滤了继续属性run
三、forEach()
遍历,IE8+
var arr=[1,2,3,4];
var toal=0;
arr.forEach(function(x){
toal+=x;
});
toal;//10