使用angularjs.foreach時return的問題解決
AngularJS中當(dāng)我們需要遍歷某個數(shù)組的時候,我們會用到forEach語法。AngularJS中forEach的用法如下:
angular.forEach(array,function(obj,index){
doSomething();
})
array表示需要遍歷的數(shù)組,obj表示遍歷時的每個元素,index表示遍歷時元素的下標(biāo)。index不是必須的參數(shù),可以不寫??梢愿鶕?jù)需要添加與否。
在寫一個比較數(shù)組對象中是否存在一個對象,存在返回true,失敗返回false.在return時,發(fā)現(xiàn)并沒有退出方法,自己測試了一下.
首先先寫一個數(shù)組對象,然后用angularjs的forEach方法循環(huán)比較,當(dāng)存在名字為2的對象時,輸出true并返回,否則輸出false并返回.
self.test = function() {
var testArray = [{name: 1},{name:2},{name:3}];
angular.forEach(testArray, function(value, key){
if (value.name == 2) {console.log(true + ' pass the test');return;}
console.log(value.name + ' pass');
});
console.log(false + ' pass the test');
return false;
}();
剛開始認(rèn)為,當(dāng)找到value.name == 2的元素時,方法就會直接返回,所以應(yīng)該只輸出1 pass,true pass the test然后程序結(jié)束,但輸出結(jié)果卻是這樣的:

結(jié)果發(fā)現(xiàn)在forEach里的return 居然只起到了for循環(huán)里的continue作用.
再把forEach循環(huán)的返回值和執(zhí)行函數(shù)的返回值打印出來:

forEach函數(shù)返回的是循環(huán)的數(shù)組,函數(shù)的返回值是false.說明在forEach里return 并沒有奏效,僅僅起到了continue的作用.
去網(wǎng)上搜了一下,并沒有原因說明..
解決方案:用一個臨時變量存儲結(jié)果,當(dāng)條件成立相同時將結(jié)果改為true:
self.test = function() {
var testArray = [{name: 1},{name:2},{name:3}];
var result = false;
angular.forEach(testArray, function(value, key){
if (value.name == 2) {result = true;}
});
return result;
};
console.log(self.test());

這樣雖然能獲得正確的返回值,但卻無法阻止forEach的循環(huán),想來forEach應(yīng)該是用在歷遍數(shù)組元素來做一些操作,像這樣的應(yīng)該用for循環(huán)比較好一些.
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Angular2里獲取(input file)上傳文件的內(nèi)容的方法
這篇文章主要介紹了Angular2里獲?。╥nput file)上傳文件的內(nèi)容的方法,非常具有實用價值,需要的朋友可以參考下2017-09-09
在AngularJS應(yīng)用中實現(xiàn)一些動畫效果的代碼
這篇文章主要介紹了在AngularJS應(yīng)用中實現(xiàn)一些動畫效果的代碼,AngularJS是一款熱門的JavaScript庫,需要的朋友可以參考下2015-06-06
AngularJS使用攔截器實現(xiàn)的loading功能完整實例
這篇文章主要介紹了AngularJS使用攔截器實現(xiàn)的loading功能,結(jié)合完整實例形式分析了AngularJS攔截器的設(shè)置、調(diào)用及l(fā)oading功能實現(xiàn)技巧,需要的朋友可以參考下2017-05-05
angular學(xué)習(xí)之動態(tài)創(chuàng)建表單的方法
這篇文章主要介紹了angular學(xué)習(xí)之動態(tài)創(chuàng)建表單的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
angular select 默認(rèn)值設(shè)置方法
下面小編就為大家?guī)硪黄猘ngular select 默認(rèn)值設(shè)置方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
AngularJS解決ng界面長表達式(ui-set)的方法分析
這篇文章主要介紹了AngularJS解決ng界面長表達式(ui-set)的方法,通過具體問題的分析并結(jié)合實例形式給出了AngularJS長表達式的相關(guān)使用技巧,需要的朋友可以參考下2016-11-11

