js--迭代器之数组与对象迭代器
2016-09-05 14:38
363 查看
之所以将这两种迭代器写在同一篇中是因为基于面向对象思想,数组也是对象
//数组迭代
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掉了 如想用数组迭代器遍历对象,可将对象转成数组即可
//数组迭代
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掉了 如想用数组迭代器遍历对象,可将对象转成数组即可
相关文章推荐
- JS数组对象参考
- Javascript入门学习第四篇 js对象和数组第1/2页
- js以对象为索引的关联数组
- js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
- js数组对象的学习
- js: js中数组对象的使用
- js中array(数组)对象的splice方法的详解
- js 多种变量定义(对象直接量,数组直接量和函数直接量)
- js 多种变量定义(对象直接量,数组直接量和函数直接量)
- js中将具有数字属性名的对象转换为数组
- Javascript入门学习第四篇 js对象和数组第1/2页
- Js 把数组和自定义对象转换成字符串
- TD组合为js数组对象
- (转载)js 数组对象的操作方法
- js 数组实现一个类似ruby的迭代器
- [导入]JS对象与数组参考大全
- 将js对象数组插入到table
- js 数组实现一个类似ruby的迭代器
- js 数组对象的操作方法
- js中将具有数字属性名的对象转换为数组