2017-02-20 74 views
1

我有一个函数,它在点击时添加/删除一个新的输入字段。每个领域都有自己的ng模型家族。功能计算溢价,这取决于年龄。函数的结果是这样一组对象:如何获取对象属性的总和

[ 
    { 
     "id":"fam1", 
     "age":2, 
     "btaccident":0.79, 
     "btdisability":0.13, 
     "btdeath":0.18, 
     "premium":5 
    }, 
    { 
     "id":"fam2", 
     "age":3, 
     "btaccident":0.79, 
     "btdisability":0.13, 
     "btdeath":0.18, 
     "premium":5 
    } 
] 

对象的数量取决于添加按钮被点击的次数。

如何获得VIEW中每个数组对象的“高级”总和?

我曾尝试为休耕:

$scope.totalFamily = 0; 

    $scope.getTotalPremium = function() { 
     for (var i=0; i<$scope.familyMembers.length; i++) { 
      $scope.totalFamily += $scope.familyMembers[i].premium; 
     } 
    }; 
+1

你为此尝试了什么。 ? – Ved

+0

@Ved我在原文中添加了我的解决方案。 –

+0

请检查我的或@sajeetharan的答案。 – Ved

回答

0

您可以使用angular.forEach(),

$scope.sum = function(){ 
    var total = 0; 
    angular.forEach($scope.data,function(key,value){ 
     total+=key.premium; 
    }) 
    return total; 
    } 

DEMO

var app= angular.module("MyApp", []); 
 

 
app.controller("MyController", function($scope) { 
 
    $scope.data = [ 
 
    { 
 
     "id":"fam1", 
 
     "age":2, 
 
     "btaccident":0.79, 
 
     "btdisability":0.13, 
 
     "btdeath":0.18, 
 
     "premium":5 
 
    }, 
 
    { 
 
     "id":"fam2", 
 
     "age":3, 
 
     "btaccident":0.79, 
 
     "btdisability":0.13, 
 
     "btdeath":0.18, 
 
     "premium":5 
 
    } 
 
]; 
 

 
$scope.sum = function(){ 
 
var total = 0; 
 
angular.forEach($scope.data,function(key,value){ 
 
    total+=key.premium; 
 
}) 
 
return total; 
 
} 
 
});
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
    <link rel="stylesheet" href="style.css"> 
 
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script> 
 
    <script src="script.js"></script> 
 
    </head> 
 
    <body ng-app="MyApp" ng-controller="MyController"> 
 
    
 
    <h1> sum is : {{sum()}}</h1> 
 
    </body> 
 
</html>

0

如果你不使用任何像Underscore或Lodash这样的库,使用forEach方法遍历对象。

var obj = [{"id":"fam1","age":2,"btaccident":0.79,"btdisability":0.13,"btdeath":0.18, "premium": 5},{"id":"fam2","age":3,"btaccident":0.79,"btdisability":0.13,"btdeath":0.18, "premium": 5}]; 
    var sum = 0; 

    obj.forEach(function(val){sum = sum+val.premium})