2017-02-21 9 views
-1

私はこの国を選択すると、より多くの国とメダルを持つオブジェクトがあれば、特定の国で優勝したメダルに最も適した方法はありますか?angleJsと同じ配列内の異なるオブジェクトからの値の一致

[ 
{ 
"athlete": "KOGO, Micah", 
"country": "KEN", 
"sex": "Men", 
"event": "10000m", 
"medal": "Bronze" 
}, 
{ 
"athlete": "BEKELE, Kenenisa", 
"country": "ETH", 
"sex": "Men", 
"event": "10000m", 
"medal": "Gold" 
}, 
{ 
"athlete": "SIHINE, Sileshi", 
"country": "ETH", 
"sex": "Men", 
"event": "10000m", 
"medal": "Silver" 
}, 
{ 
"athlete": "FLANAGAN, Shalane", 
"country": "USA", 
"sex": "Women", 
"event": "10000m", 
"medal": "Bronze" 
} 
] 
+0

ご希望の出力は何ですか? –

+0

各国のメダル数とどのメダルが勝ったのかを表示 – ronoc4

+1

その出力をどのように構造化したいですか?私はあなたがサンプル入力に基づいてサンプル出力を提供できるかもしれないと考えていました。 –

答えて

2

これは、メダルのカウントを持つ国の順序付けられていないリストを作成します。

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

 
app.controller("controller", function($scope) { 
 

 
    $scope.input = [{ 
 
     "athlete": "KOGO, Micah", 
 
     "country": "KEN", 
 
     "sex": "Men", 
 
     "event": "10000m", 
 
     "medal": "Bronze" 
 
    }, 
 
    { 
 
     "athlete": "BEKELE, Kenenisa", 
 
     "country": "ETH", 
 
     "sex": "Men", 
 
     "event": "10000m", 
 
     "medal": "Gold" 
 
    }, 
 
    { 
 
     "athlete": "SIHINE, Sileshi", 
 
     "country": "ETH", 
 
     "sex": "Men", 
 
     "event": "10000m", 
 
     "medal": "Silver" 
 
    }, 
 
    { 
 
     "athlete": "FLANAGAN, Shalane", 
 
     "country": "USA", 
 
     "sex": "Women", 
 
     "event": "10000m", 
 
     "medal": "Bronze" 
 
    } 
 
    ]; 
 

 
    $scope.countries = $scope.input.map(function(obj) { 
 
    return obj.country; 
 
    }); 
 

 
    $scope.uniqueCountries = $scope.countries.filter(function(item, pos) { 
 
    return $scope.countries.indexOf(item) == pos; 
 
    }) 
 

 
    $scope.getMedalCount = function(country, colour) { 
 
    var count = 0; 
 
    angular.forEach($scope.input, function(obj) { 
 
     if ((obj.country === country) && (obj.medal === colour)) { 
 
     count++; 
 
     } 
 
    }); 
 
    return count; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<body ng-app="yourApp"> 
 
    <div ng-controller="controller"> 
 
    <ul> 
 
     <li ng-repeat="country in uniqueCountries"> 
 
     {{ country }} 
 
     <ul> 
 
      <li>Gold: {{ getMedalCount(country, "Gold") }}</li> 
 
      <li>Silver: {{ getMedalCount(country, "Silver") }}</li> 
 
      <li>Bronze: {{ getMedalCount(country, "Bronze") }}</li> 
 
     </ul> 
 
     </li> 
 
    </ul> 
 
    </div> 
 
</body>

関連する問題