js原生有个for-each方法,但是只能遍历数组不能遍历对象;

jq有个$.each倒是可以遍历数组和对象,但是项目中如果不想用jq呢,我们就用原生来写一个吧。

    [12,23,34].forEach((item,index)=>{
<!--这里默认this是window-->
console.log(item);
if(index>=1){
return fasle
}
},"这个参数可以指定回调函数里的this")
执行结果: 12,23 $.each({"name":"happy","age":18},(index,item)=>{
console.log(item);
if(item == "age" ){
return fasle
}
});//没有第三个参数

实现思路:

  • each方法要接收两个参数,一个接收数组或者对象,一个接收回调函数
  • 判断第一个参数是数组还是对象,再去执行不同的遍历
  • 判断回调函数是否存在&要根据回调函数的返回值决定当前循环是否继续
  • 如果第一个参数是对象,用for-in遍历的时候需要判断是否是私有属性
   let each = function(obj,callback){
if("length" in obj){
for(let i =0;i<obj.length;i++){
let item = obj[i];
let res = callback && callback.call(item,i,item);
if(res === false){
break;
}
}
}else{
for(let key in obj){
if(obj.hasOwnProperty(key)){
let value = obj[key];
let res = callback && callback.call(value,key,value);
if(res === false){
break;
}
}
}
}
}
// 调用:
each([12,23,24],function(index,item){
console.log(index,item);
if(index>=1){
return false;
}
})
each({name:"happy",age:18,sex:1},function(key,value){
console.log(key,value);
if(key === 'age'){
return false;
}
})

最新文章

  1. NOIp2016 Day1&amp;Day2 解题报告
  2. 从零开始学习Node.js例子八 使用SQLite3和MongoDB
  3. C# 使用memcache(memcache安装)
  4. 构建maven项目3
  5. VC6兼容性及打开文件崩溃问题解决
  6. ELF学习--装载过程
  7. Oracle 6 - 锁和闩 - transaction的可串行化
  8. C++实现一个单例模板类
  9. HDU 5912 Fraction 【模拟】 (2016中国大学生程序设计竞赛(长春))
  10. 从头开始学c++,补基础,补踏实
  11. 10-UIKit(UIDatePicker、UIPickerView、UIWebView、Storyboard)
  12. (转载)html中div使用自动高度
  13. 使用AIR进行移动APP开发常见功能和问题(上)
  14. JavaSE二次学习之标识符和编程命名相关的内容
  15. BZOJ2744: [HEOI2012]朋友圈
  16. 用SDL库播放yuy2 Packed mode
  17. 修复lvm的逻辑卷
  18. C#实现给图片加边框的方法
  19. babel-loader和webpack UglifyJS一起使用时console的问题
  20. ES线程池

热门文章

  1. “龙井”开箱评测 |Alibaba Dragonwell 新手上路指南
  2. PLAY2.6-SCALA(八) comet
  3. MUI - myStorage在ios safari无痕浏览模式下的解决方案
  4. Python学习之路9☞面向对象的程序设计
  5. 大话鸿蒙操作系统(一)-- 先聊聊 Fuchsia OS
  6. 学生信息管理系统之【修改信息窗口】 标签: 数据库vb 2014-06-13 21:23 1167人阅读 评论(15)
  7. dataframe添加元素指定为列表,不同for循环命名空间下的变量重复问题
  8. SDUT-2118_数据结构实验之链表三:链表的逆置
  9. Python基础:06条件和循环
  10. HDFS概念名称节点和数据节点-名称节点