首頁 > web前端 > js教程 > 主體

angularjs.foreach使用式return的用法

不言
發布: 2018-09-30 16:10:48
轉載
3257 人瀏覽過

這篇文章帶給大家的內容是關於angularjs.foreach使用時return的用法,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

在寫一個比較數組對像中是否存在一個對象,存在返回true,失敗返回false.在return時,發現並沒有退出方法,自己測試了一下.

首先先寫一個數組對象,然後用angularjs的forEach方法循環比較,當存在名字為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;
    }();
登入後複製

剛開始認為,當找到value.name = = 2的元素時,方法就會直接傳回,所以應該只輸出1 pass,true pass the test然後程式結束,但輸出結果卻是這樣的:

angularjs.foreach使用式return的用法

結果發現在forEach裡的return 居然只起到了for迴圈裡的continue作用.
再把forEach迴圈的回傳值和執行函數的回傳值印出來:

angularjs.foreach使用式return的用法

#forEach函數返回的是循環的數組,函數的返回值是false.說明在forEach裡return 並沒有奏效,僅僅起到了continue的作用.
去網上搜了一下,並沒有原因說明..

解決方案:用一個臨時變數存儲結果,當條件成立相同時將結果改為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());
登入後複製

angularjs.foreach使用式return的用法
這樣雖然能獲得正確的返回值,但卻無法阻止forEach的循環,想來forEach應該是用在歷遍數組元素來做一些操作,像這樣的應該用for迴圈比較好一些.

#

以上是angularjs.foreach使用式return的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!