zoukankan      html  css  js  c++  java
  • 各种循环遍历

    一、for循环

     1 (function() {
     2     for(var i=0, len=demoArr.length; i<len; i++) {
     3         if (i == 2) {
     4             // return;   // 函数执行被终止
     5             // break;    // 循环被终止
     6             continue; // 循环被跳过
     7         };
     8         console.log('demo1Arr['+ i +']:' + demo1Arr[i]);
     9     }
    10 })();

    ⚠️:关于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指向newArr
    4  }, newArr)

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

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

    六、性能对比

  • 相关阅读:
    对于Spring中AOP,DI,IoC概念的理解
    Java多线程(2)线程锁
    JVM中ClassLoader的学习
    用心对待博客,用脚对待cv
    硬核关闭wps for linux的自动备份功能
    [翻译]官网文档,ubuntu使用vscode调试c++
    一文快速入门Shell脚本_了解Shell脚本基本命令
    Ubuntu安装旧版本/指定版本的JDK
    ubuntu1204搭建Andriod4.0环境时了解的相关扩展信息
    避免火狐浏览器产生巨大的磁盘写入量及一些小优化
  • 原文地址:https://www.cnblogs.com/catherLee/p/10457762.html
Copyright © 2011-2022 走看看