js - 循環 遍歷方法 跳出循環


js - 循環 遍歷方法 跳出循環

循環

for

  1. for有三個表達式:①聲明循環變量;②判斷循環條件;③更新循環變量;三個表達式之間,用;分割, for循環三個表達式都可以省略,但是兩個“;”缺一 不可。
  2. for循環的執行特點:先判斷再執行,與while相同
  3. for循環三個表達式都可以有多部分組成,第二部分多個判斷條件用&& ||連接,第一三部分用逗號分割;
for(var num = 1;num<10;num++){
 console.log(num);//1,2,3,4,5,6,7,8,9
}

while

while循環()中的表達式,運算結果可以是各種類型,但是最終都會轉為真假,轉換規則如下。

  • Boolean:true為真,false為假;
  • String:空字符串為假,所有非空字符串為真;
  • Number:0為假,一切非0數字為真;
  • null/Undefined/NaN:全為假;
  • Object:全為真。
var num = 1;//1、聲明循環變量
            
while (num<10){//2、判斷循環條件;
    console.log(num);//3、執行循環體操作;
    num++;//4、更新循環變量;
}

do while

while循環特點:先判斷后執行;

do-while循環特點:先執行再判斷,即使初始條件不成立,do-while循環至少執行一次,也就是說do-while循環比while循環多執行一次。

var num = 10;
            
do{
    console.log(num);//10 9 8 7 6 5 4 3 2 1 0
    num--;
    }while(num>=0);
            
   console.log(num);//-1

循環的嵌套

  • 外層循環控制行
  • 內層循環控制列
  • 循環的嵌套:解決多行多列的結構
for(var j=1;j<9;j++){
        for(var i=0;i<j+1;i++){
            document.write("*");
        }
        document.write("<br>");
    }

// ** 
// *** 
// **** 
// ***** 
// ****** 
// ******* 
// ******** 
// ********* 

遍歷方法

for in

for - in 語句用於對數組或者對象的屬性進行循環操作。
for - in 循環中的代碼每執行一次,就會對數組或者對象的屬性進行一次操作。

let obj={'name':'programmer','age':'22','height':'180'};
for(let i in obj){
    console.log(i,obj[i])
}

for of

for...of循環可以使用的范圍包括數組、Set 和 Map 結構、某些類似數組的對象(比如arguments對象、DOM NodeList 對象)、后文的 Generator 對象,以及字符 串。

JavaScript 原有的for-in循環,只能獲得對象的鍵名,不能直接獲取鍵值。ES6 提供for...of循環,允許遍歷獲得鍵值

數組操作

 var arr = ['a', 'b', 'c', 'd'];
 for (let a in arr) {
   console.log(a); // 0 1 2 3
 }
 
 for (let a of arr) {
   console.log(a); // a b c d
 }

類似數組的對象操作


 // 字符串
var str = "hello";

for (let s of str) {
  console.log(s); // h e l l o
}

// DOM NodeList對象
let paras = document.querySelectorAll("p");

for (let p of paras) {
  p.classList.add("test");
}

// arguments對象
function printArgs() {
  for (let x of arguments) {
    console.log(x);
  }
}
printArgs('a', 'b');// 'a' 'b'

Array.forEach

循環控制語句

break

跳出本層循環,繼續執行循環后面的語句。
如果循環有多層,則break只能跳出一層。

continue

跳過本次循環剩余的代碼,繼續執行下一次循環。

  • 對與for循環,continue之后執行的語句,是循環變量更新語句i++;
  • 對於while、do-while循環,continue之后執行的語句,是循環條件判斷;
    因此,使用這兩個循環時,必須將continue放到i++之后使用,否則continue將跳過 i++進入死循環。
 for(var i=0;i<10;i++){
        if(i == 5){
            break;
        }
        console.log(i);//0,1,2,3,4
    }

    for(var i=0;i<10;i++){
        if(i == 5){
            continue;
        }
        console.log(i);//0,1,2,3,4,6,7,8,9
    }

跳過循環

continue

用來跳過循環,繼續往下循環:

for(var i=0;i<=10;i++){
   if(i==5){continue;}
   document.write(i);//輸出01234678910
}

跳出循環

break

用來終止循環,讓循環不再往下繼續:

for(var i=0;i<=10;i++){
   document.write(i);//輸出012345
   if(i==5){break;}
}

return

return只能出現在函數里,如果出現在上面實例里的for循環里就會報錯,return出現在函數里的作用就是即使下面還有內容也不再繼續往下執行了,最常見的就是在函數里判斷參數是否符合要求, 如果不符合要求就不再繼續往下執行:

 let username = ''
 function  abc(){
  if (username==""){
    alert("請輸入用戶名");
    return false;//因為username不符合我們的要求,所以在這里用return來終於函數往下繼續執行
  }
  alert("歡迎你"+username);
 }
 abc()

Array.some

  Array(10)
    .fill('')
    .some((v, i) => {
      document.write(i);
      //   if (i == 5) {
      //     break; // Uncaught SyntaxError: Illegal break statement
      //     return true; // 012345end
      //     throw Error('error'); // 012345
      //   }
      return i == 5; // 012345end
    });
  document.write('end');

!!!throw Error

  • 拋出錯誤並停止運行
  • 注意使用場景
  • 可用於任何循環方法 forEach/map/filter
document.write('forEach');
Array(10)
  .fill('')
  .map((v, i) => i)
  .forEach((v, i) => {
    document.write(i);
    if (i == 5) {
      // break; // Uncaught SyntaxError: Illegal break statement
      // return false // 不報錯但無效 'forEach0123456789end'
      throw Error('error'); // forEach012345
    }
  });
document.write('end'); // 未執行 throw Error 中止

jquery里跳出each循環

也許我們通過 jquery 的循環方法進行數組遍歷,但是當不符合條件時,怎么跳出當前循環?(即用each方法內,當不滿足條件時想break跳出循環體,想continue繼續執行下一個循環遍歷),我們經常會習慣JS中的break何continue,但是使用之后沒有效果,因為在JQuery中沒有這兩條命令,非其關鍵字。

  • JQuery each循環,要實現break和continue的功能
break   ----用return false; 
continue --用return ture;
  • JQuery怎么跳出當前的each循環

API 上的說明只有跳出整個循環(如果需要退出 each 循環可使回調函數返回 false,其它返回值將被忽略。)

return false;——跳出所有循環;相當於 javascript 中的 break 效果。
return true;——跳出當前循環,進入下一個循環;相當於 javascript 中的 continue 效果

$(function (){
 $("input[type='text']").each(function (i){ 
  var _val=$(this).val();
  alert(_val);
  if(_val=='2'){  
   return false; //跳出循環
  }
 })
});
  • JQuery each方法跳出循環並獲得返回值的方法
// JQuery是對象鏈,所以$(..).each()返回的還是對象集合。each(function(){}):是回調函數,在回調函數里不能返回結果到回調函數each外面。
function test(){
var success = false;
$(..).each(function () {
   if (..) {
       success = true;
       return false;
   }
});
 return success ;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM