【问题标题】:Sum in angular js loop在角度 js 循环中求和
【发布时间】:2016-07-29 10:11:14
【问题描述】:

我有一个这样的数组。

$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 时出现问题。

【问题讨论】:

    标签: javascript php angularjs


    【解决方案1】:

    +用于javascript中的连接,所以添加你必须使用eval()

    所以写你的代码如下

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

    看起来像

    amnt = eval("20 + 10");
    

    【讨论】:

    • 确实,+ 用于连接,但仅用于字符串。当我们处理数值变量时,+ 用于加法。还有eval是邪恶的stackoverflow.com/questions/197769/…
    • 您的答案适合 item.amount.. 当我使用 eval(item.amount) 时,我的问题已解决。但不需要对 $scope.TSUM+10 进行评估。
    【解决方案2】:

    您可以使用parserInt 或parseFloat

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

    【讨论】:

      【解决方案3】:

      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;
      
          })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-02
        • 1970-01-01
        • 2016-10-31
        • 1970-01-01
        • 2023-01-02
        • 2018-11-13
        相关资源
        最近更新 更多