2016-07-29 5 views
0

У меня такой массив.Сумма в угловой петле js

$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' is evil https://stackoverflow.com/questions/197769/when-is-javascripts-eval-not-evil – andale

-1

вар 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

Вы можете использовать parserInt или parseFloat

amnt = parserInt($scope.TSUM) + 10; 
Смежные вопросы