1. forEach()javascript
forEach() 方法從頭到尾遍歷數組,爲每一個元素調用指定的函數。如上所述,傳遞的函數做爲forEach()的第一個參數。而後forEach()使用三個參數調用該 函數:數組元素、元素的索引和數組自己。若是隻關心數組元素的值,能夠編寫只有一個參數的函數——額外的參數將忽略:html
var data = [1,2,3,4,5];
java//要求和的數組數組
// 計算數組元素的和值
dom
var sum = 0; 函數
// 初始爲0測試
data.forEach(function(value){ sum += value; }); this
// 將每一個值累加到sum上spa
sum prototype
// => 15
// 每一個數組元素的值自加1
data.forEach(function(v,i, a){ a[i] = v + 1; });
data
// => [2,3,4,5,6]
注意,forEach()沒法在全部元素都傳遞給調用的函數以前終止遍歷。也就是說,沒有像for循環中使用的相應的break語句。若是要提早終止,必須把forEach()方法放在一個try塊中,並能拋出一個異常。若是forEach()調用的函數拋出foreach.break異常,循環會提早終止:
function foreach(a,f,t){
try { a.forEach(f,t); }
catch(e){
if(e === foreach.break)return;
else throw e;
}
}
foreach.break = new Error("StopIteration");
轉自: 《JavaScript權威指南(6版)》7.9.1 forEach()
2.如今讓咱們來實踐一下吧!!!是否是很興奮?!是否是很激動?!!是否是火燒眉毛!!!
Let's Go !!!
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 </head> 7 <body> 8 <script type="text/javascript"> 9 10 11 function skipOutForeach(){ 12 13 //1.測試 return,return false是否能跳出循環 14 var arr = []; 15 arr = getArr(1,30); 16 console.log(arr); 17 arr.forEach(function(el,index){ 18 if (el==20) { 19 console.log("遇到20,能退出嗎?");//並不能 20 return;//return false; 21 }else{ 22 console.log(el); 23 } 24 }); 25 26 //2.使用異常的方式來跳出forEach循環--------------------------- 27 console.log("-------------------------------") 28 var myerror = null; 29 try{ 30 arr.forEach(function(el,index){ 31 if (el==20) { 32 console.log("try中遇到20,能退出嗎?");// 33 foreach.break=new Error("StopIteration"); 34 }else{ 35 console.log(el); 36 } 37 }); 38 }catch(e){ 39 console.log(e.message); 40 if(e.message==="foreach is not defined") { 41 console.log("跳出來了?");// 42 return; 43 }else throw e; 44 }//能夠跳出來,那麼 咱們能夠重寫foreach方法 45 //----------------------------- 46 console.log("aaa"); 47 48 } 49 50 // skipOutForeach(); 51 52 //自定義foreach方法(往Array或String的prototype添加也能夠) 53 function fore7(arr,func){ 54 console.log(arr); 55 for (var i = 0; i < arr.length; i++) { 56 var ret= func.call(this,arr[i],i);//回調函數 57 if(typeof ret !== "undefined"&&(ret==null||ret==false)) break; 58 } 59 60 } 61 62 //自定義foreach,的用法 63 fore7(getArr(1,30),function(a,i){ 64 console.log(i+':'+a); 65 if (i==20) return false;//跳出循環 66 }) 67 68 69 70 71 72 73 74 //返回min,max之間的數組成的數組,無序 75 function getArr(min,max){ 76 if(typeof min!=='number'||typeof max !== 'number') return []; 77 var arr = []; 78 for (var i = min; i <= max; i++) { 79 if (arr.length<1) { 80 arr.push(i); 81 }else{ 82 var len = arr.length; 83 var rIndex = Math.round(Math.random()*(len-1)); 84 var temp = arr[rIndex]; 85 arr[rIndex] = i; 86 arr.push(temp); 87 } 88 } 89 return arr; 90 } 91 </script> 92 </body> 93 </html>
3.for循環
return,break均可以跳出
可是多重循環呢?
1 aaa://須要將循環命名 2 for(var i=0;i<10;i++){ 3 for(var j=0;j<5;j++){ 4 if(i==3 && j==4){ 5 break aaa;//跳出循環aaa 6 } 7 } 8 } 9 alert(i);輸出3
4.附錄:
StackOverFlow: http://stackoverflow.com/questions/6260756/how-to-stop-javascript-foreach