angularjs - 卡在控制器中的一个愚蠢的循环中
问题描述
我有这个功能:
$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 美元,我不明白发生了什么!
解决方案
你不需要在这里使用 for 循环,你可以简单地使用 array.find() 方法找到精确匹配的值,如下所示,
$scope.showCurrencyT = function(invCurrency){
var result = $scope.pageInfo.currencies.find(t=>t.currencyCode === invCurrency);
return result.symbol;
}
推荐阅读
- reactjs - react-jsonschema-form updown 小部件最小注册但未强制执行
- java - 如何在这些单元测试中捕获 Flux 的日志输出?
- graphql - 如何嵌套 qraphql 解析器以便对它们进行分组
- sas - SAS twosamplesurvival 样本量问题
- docker - 使用 golang 检索 cri-o 信息
- neural-network - 在神经网络中,为什么通常将神经元数量设置为 2^n?
- groovy - Groovy 中的 Java 14 支持?
- rust - 如何更好地理解 Rust 中的 Crate?
- r - 按ggplot中的条件对图例值进行分组
- tomcat - Jelastic中的ResCarta?