JQuery怎么跳出循环

for,each,forEach...

Posted by Autuan.Yu on December 3, 2019

对程序员来说大部分的快乐是从解决问题,特别是独立解决问题中获得,而不是从这个CASE有多大,奖金有多少中获得

在JavaScript中,循环的写法有很多种,有很多朋友不知道如何跳出循环.

今天这篇博客简单地写一下.

如有错误,欢迎各位指出.谢谢.

for

for 循环在目前的情况下一般用于较为复杂的语句或者初学者

for(let i=0;i<length;i++){
  // continue;
  continue;
  // break
  break;
}

each

each 主要用于遍历jquery的dom节点.

        $('.defaultPropertySwitch').each(function () {
          let breakFlag = false;
          if(breakFlag){
            // return false 等于 普通 for 循环中的 break
            return false;
          } else {
            // return true 等于 普通 for 循环中的 continue
            return true;
          }
          // do something ....
          // ...
       });

forEach

forEach 循环主要用于JS数组的遍历,常见情况是遍历ajax返回的数据.
forEach 是JS提供的API,而不是JQuery,希望大家注意.

jsArray.forEach(function(eachData){
  // break;
  return false;
  // continue
  return true;
});

for-in

for-in 循环只要用户遍历对象.
在简单的使用场景下,基本上用不到此种for循环.
不推荐使用for-in遍历数组

var obj = {};
for (var prop in obj) {
  // continue
  continue;
  // break;
  break;
}

for-of

如果你不喜欢forEach循环,而你的版本是JavaScript6及以后.
那么,你可以使用for-of循环

for(const val of array){
  // continue
  continue;
  // break
  break;
}

其他一些方法

其实,善用api我们可以少写很多无用的代码.
下面列出一部分api,虽然没有break和continue,不过它们可以帮助我们更好地对数组进行处理

filter 检测数值元素,并返回符合条件所有元素的数组

let oldArray = [16,17,18,19,20];
let newArray = oldArray.filter(val => val>= 18);

console.log(newArray);
// output: array[18,19,20]

every 检测数值元素的每个元素是否都符合条件

let oldArray = [16,17,18,19,20];
let bool = oldArray.every(val =>val >= 18);

console.log(bool);
// false

some 检测数组元素中是否有元素符合指定条件

let oldArray = [16,17,18,19,20];
let bool = oldArray.some(val =>val >= 18);

console.log(bool);
// true