博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
各种循环遍历
阅读量:4974 次
发布时间:2019-06-12

本文共 1963 字,大约阅读时间需要 6 分钟。

一、for循环

1 (function() { 2     for(var i=0, len=demoArr.length; i

⚠️:关于for循环,有以下几点需要注意

  • for循环中的i在循环结束之后任然存在与作用域中,为了避免影响作用域中的其他变量,使用函数自执行的方式将其隔离起来()();或者也可以使用let声明i。
  • 避免使用for(var i=0; i<demoArr.length的方式,这样的数组长度每次都被计算,效率低于上面的方式。也可以将变量声明放在for的前面来执行,提高阅读性。

 

二、for-in

  • 遍历数组时,i表示索引值, arr表示当前索引值对应的元素 arr[i]
  • 遍历对象时,i表示key值,arr表示key值对应的value值 obj[i]
1 (function() { 2     for(var i in demoArr) { 3         if (i == 2) { 4             return; // 函数执行被终止 5             // break;  // 循环被终止 6             // continue;  // 循环被跳过 7         }; 8         console.log('demoArr['+ i +']:' + demoArr[i]); 9     }10     console.log('-------------');11 })();

⚠️:关于for-in循环,有以下几点需要注意

  • 在for循环与for in循环中,i值都会在循环结束之后保留下来。因此使用函数自执行的方式避免。
  • 使用return,break,continue跳出循环都与for循环一致,不过关于return需要注意,⚠️在函数体中,return表示函数执行终止,就算是循环外面的代码,也不再继续往下执行。而break仅仅只是终止循环,后面的代码会继续执行。

四、forEach(func)

demoArr.forEach(function(arg) {})

1 demoArr.forEach(function(val, index) {2     if (val == 'CSS3') {3         return;  // 循环被跳过4         // break;   // 报错5         // continue;// 报错6     };7     console.log(val, index);8 })

 

⚠️:具体有以下需要注意的地方

  • 回调函数中有2个参数,分别表示值和索引,这一点与jQuery中的$.each相反
  • 1 $.each(demoArr, function(i, ele) {2     console.log(i, ele);3 })
  • forEach无法遍历对象
  • forEach无法在IE中使用,firefox和chrome实现了该方法
  • forEach无法使用break,continue跳出循环,使用return时,效果和在for循环中使用continue一致
  • 最重要的一点,可以添加第二参数,为一个数组,而且回调函数中的this会指向这个数组。而如果没有第二参数,则this会指向window。
1  var newArr = [];2  demoArr.forEach(function(val, index) {3     this.push(val);  // 这里的this指向newArr4  }, newArr)

 

五、arr.map(function(n){ });

arr.map(function(n){     });

 

六、性能对比

 

转载于:https://www.cnblogs.com/catherLee/p/10457762.html

你可能感兴趣的文章
LeetCode 题解之Add Digits
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
JS验证图片格式和大小并预览
查看>>
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>
windows xp 中的administrator帐户不在用户登录内怎么解决?
查看>>
接口和抽象类有什么区别
查看>>
Codeforces Round #206 (Div. 2)
查看>>
**p
查看>>
优先队列详解
查看>>
VS2012 创建项目失败,,提示为找到约束。。。。
查看>>
设计类图
查看>>
类对象
查看>>
[Voice communications] 声音的滤波
查看>>
SQL语言之概述(一)
查看>>
软件建模——第9章 毕业论文管理系统—面向对象方法
查看>>
[SDOI2008]洞穴勘测
查看>>
Difference between Linearizability and Serializability
查看>>