首页 > 解决方案 > 卡在控制器中的一个愚蠢的循环中

问题描述

我有这个功能:

$scope.showCurrencyT = function(invCurrency){

    for (i=0; i<2; i++) { 
        console.log("i is " +i);

        if (parseInt($scope.pageInfo.currencies[i].currencyCode) === parseInt(invCurrency) ) {

           console.log('passed '+ i + ' ' + $scope.pageInfo.currencies[i].currencyCode )

           var symbol =  $scope.pageInfo.currencies[i].symbol
           console.log(symbol);

       } else { 
           console.log(i +" else")
           var symbol = invCurrency
       }

    }

    console.log("final symbol is " + symbol)

    return symbol

}

$scope.pageInfo.currencies.length循环中的“2”实际上可以是

$scope.pageInfo.currencies object看起来像这样:

 [  
   {  
      "_id":"59e5d2ad57acbb22bce66482",
      "name":"US Dollar",
      "nameInOriginalLanguage":"US Dollar",
      "nameStringId":"806c1313-a9f4-53bc-8f20-6897aae76d0a",
      "symbol":"USD",
      "currencyCode":"840",
      "__v":0
   },
   {  
      "_id":"59e5d2ec57acbb22bce66484",
      "name":"Turkish Lira",
      "nameInOriginalLanguage":"Türk Lirası",
      "nameStringId":"e072dece-4e18-d830-06b3-9e789a3b5240",
      "symbol":"TRY",
      "currencyCode":"949",
      "__v":0
   }
]

当我通过视图时:

{{showCurrencyT("840")}}

我进入控制台:

最终符号是 840

但是当我通过它时,{{showCurrencyT("949")}} 我得到的最终符号是 TRY

它应该返回 840 美元,我不明白发生了什么!

标签: angularjs

解决方案


你不需要在这里使用 for 循环,你可以简单地使用 array.find() 方法找到精确匹配的值,如下所示,

$scope.showCurrencyT = function(invCurrency){
   var result = $scope.pageInfo.currencies.find(t=>t.currencyCode === invCurrency);
   return result.symbol;
}

推荐阅读