forEach()
方法用於調用數組的每一個元素,並將元素傳遞給回調函數。數組注意:
forEach()
對於空數組是不會執行回調函數的。bash
forEach()
是ES5中操做數組的一種方法,主要功能是遍歷數組。函數
array.forEach(function(currentValue, index, arr), thisValue)
ui
其中:this
currentValue
必需。當前元素index
可選,當前元素的索引值arr
可選,當前元素所屬的數組對象thisValue
可選,傳遞給函數的值通常用 "this" 值。若是這個參數爲空, "undefined" 會傳遞給 "this" 值返回值:undefinedspa
在forEach()
中return
不會立馬跳出函數,而是繼續執行,在文章的後面會具體描述解決辦法,先看一些實例:.net
前面也說過,forEach()的主要功能是遍歷數組code
var arr=[1,2,3,4];
arr.forEach(alert); //-> 在頁面上彈出數組的值
複製代碼
上面也提到了函數的參數,這裏寫個例子便於理解:cdn
var arr=[1,2,3,4];
arr.forEach(function(value,index,array){
array[index] == value ; //-> true
sum+=value;
});
console.log(sum); //-> 10
複製代碼
咱們都知道,在for
循環中,跳出循環能夠用break
,可是在forEach
循環遍歷中,break
會報錯,而return
也沒法跳出循環:對象
var arr=[1,2,3,4,5];
var num=3;
arr.forEach(function(value){
if(value == num){
return;
}
console.log(value);
});
複製代碼
瞧瞧咱們發現了什麼了不起的事情!這裏的return並無跳出循環返回,而是起到了for循環中continue的做用。
那麼咋中斷這個forEach呢?
第一種:使用try···catch捕獲異常實現
try{
var array=[1,2,3,4,5];
array.forEach(function(value,index){
if(value == 3){
throw new Error("Ending");
}
console.log(value)
});
}
catch(e){
if(e.message!="Ending"){
throw e;
}
}
複製代碼
第二種:使用數組中另外兩個方法替代: arr.sonme()
和arr.every()
當some()內部return true時,跳出整個循環
var arr = [1,2,3,4,5];
var num = 3;
arr.some(function(v){
if(v == num) {
return true;
}
console.log(v);
});
複製代碼
當every()內部return false時跳出整個循環
var arr = [1,2,3,4,5];
var num = 3;
arr.every(function(v){
if(v == num) {
return false;
}else{
console.log(v);
return true;
}
});
複製代碼
參考: Javascript Array forEach()中沒法return和break,代替方法some()與every()