2016-07-29 115 views
0

我有一個這樣的數組。Sum in angular js loop

$scope.addit=[{name:'A',amt:0},{name:'B',amt:0},{name:'C',amt:10},{name:'D',amt:100}]; 
$scope.TSUM = 100; 

var total_Add = 0; 

      var amnt =0; 
     angular.forEach($scope.addit, function(item) { 
      if(item.name == 'A'){ 
       amnt = $scope.TSUM; 

      } 
      else if(item.name == 'B'){ 
       amnt = $scope.TSUM + 10; 
      } 

      else if(item.name != 'A' && item.name != 'B'){ 
       amnt = item.amount; 

      } 

      total_Add = total_Add+amnt; 

     }) 

我的代碼應該返回總和。但是在這裏它連接了所有的值。 我得到像10011010100.

請幫幫我。添加item.amount時會造成問題。

回答

0

+用於在javascript級聯,所以除了必須使用eval()

所以寫代碼如下

amnt = eval($scope.TSUM +"+ 10"); 

所以看起來

amnt = eval("20 + 10"); 
+0

thanku這麼多... EVAL解決我的問題 – athi

+0

爲什麼投下來? –

+1

確實,'+'用於連接,但僅限於字符串。當我們使用數字變量時,'+'用於添加。也'eval'是邪惡的https://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil – andale

-1

VAR total_Add = 0;

 var amnt =0; 
    angular.forEach($scope.addit, function(item) { 
     if(item.name == 'A'){ 
      amnt = $scope.TSUM; 

     } 
     else if(item.name == 'B'){ 
      amnt = $scope.TSUM + 10; 
     } 

     else if(item.name != 'A' && item.name != 'B'){ 
      amnt = eval(item.amount); 

     } 

     total_Add = total_Add+amnt; 

    }) 
0

您可以使用parserIntparseFloat

amnt = parserInt($scope.TSUM) + 10;