之所以将这两种迭代器写在同一篇中是因为基于面向对象思想,数组也是对象
//数组迭代
var eachArray = function(arr,fn){
var i = 0 ,len = arr.length;
for(; i < len ; i++){
if(fn.call(arr[i],i,arr[i])===false){
break;
}
}
}
//对象迭代
var eachObject = function(obj,fn){
for(var i in obj){
if(fn.call(obj[i],i,obj[i])===false){
break;
}
}
}
//示例1数组迭代:
var arr = [1,2,1,3,4,5];
eachArray(arr,function(i,data){
console.log(i,data);
});
//结果:
0,1
1,2
2,1
3,3
4,4
5,5
//示例2对象迭代
var obj={
a:'a-r',
b:'b-r',
c:'c-r'
}
eachObject(obj,function(i,data){
console.log(i,data);
});
//结果
a,a-r
b,b-r
c,c-r
//示例三:
eachObject(arr,function(i,data){
console.log(i,data);
});
//结果同示例1
//示例4
eachArray(obj,function(i,data){
console.log(i,data);
});
//结果无任何输出 ,因为对象obj无length属性,取出的len为undefined,break掉了 如想用数组迭代器遍历对象,可将对象转成数组即可