2017-02-20 19 views
1

私はクリック時に新しい入力フィールドを追加/削除する関数を持っています。各フィールドには独自のngモデルfam.ageがあります。関数は年齢に応じて保険料を計算します。関数の結果は、次のようなオブジェクトの配列です。オブジェクトのプロパティの合計を取得する方法

[ 
    { 
     "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.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}) 
関連する問題