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 ;
}
posted @ 2022-01-26 16:16  zc-lee  阅读(1441)  评论(0编辑  收藏  举报