2017-11-12 7 views
0

私はチェックされている複数選択項目からjsonを取得しています。角度:特定のキーでjsonをフィルタリングする方法

オリジナルJSON::私は以下の元のJSONから特定のキーに基づいてJSONをフィルタリングするにはどうすればよいコードの下、この時

{ 
     "Reward": [{ 
      "RewardType": 1, 
      "RewardTypeValue": "PartCodes", 
      "RewardCode": "CB_USD_20_US", 
      "DiscountValue": 20.0 
     }, 
     { 
      "RewardType": 1, 
      "RewardTypeValue": "PartCodes", 
      "RewardCode": "CB_USD_30_US", 
      "DiscountValue": 30.0 
     }, 
     { 
      "RewardType": 1, 
      "RewardTypeValue": "PartCodes", 
      "RewardCode": "CB_USD_40_US", 
      "DiscountValue": 40.0 
     }, 
     { 
      "RewardType": 1, 
      "RewardTypeValue": "PartCodes", 
      "RewardCode": "CB_USD_50_US", 
      "DiscountValue": 50.0 
     }] 

    } 

、私が呼び出す前にのみRewardType、RewardCodeとDiscountTypeを取得しようとしています「プッシュselectedRewards "

アンギュラコード」のために":

$scope.rewards = []; 
$scope.toggleSelection = function toggleSelection(selectedRewards) { 
    var idx = $scope.rewards.indexOf(selectedRewards); 
    console.log(selectedRewards); 

    // is currently selected 
    if (idx > -1) { 
    $scope.rewards.splice(idx, 1); 
    } 

    // is newly selected 
    else { 

    $scope.rewards.push(selectedRewards); 
    } 
    console.log($scope.rewards); 
}; 

HTMLコード:

ここ
<li ng-repeat="reward in RewardsList "> 
      <input id="{{reward.RewardCode}}.{{reward.RewardType}}" 
        type="checkbox" 
        ng-checked="selection.indexOf(reward.RewardCode) > -1" 
        ng-click="toggleSelection(reward)" 
        value="{{reward.RewardCode}}" /> 
    <label for="{{reward.RewardCode}}">{{reward.RewardCode}}</label> 
    </li> 

は私が取得しようとしています予想されるJSONです:

{ 
     "Reward": [{ 
      "RewardType": 1, 
      "RewardCode": "CB_USD_20_US", 
      "DiscountValue": 20.0 
     }, 
     { 
      "RewardType": 1, 
      "RewardCode": "CB_USD_30_US", 
      "DiscountValue": 30.0 
     }, 
     { 
      "RewardType": 1, 
      "RewardCode": "CB_USD_40_US", 
      "DiscountValue": 40.0 
     }, 
     { 
      "RewardType": 1, 
      "RewardCode": "CB_USD_50_US", 
      "DiscountValue": 50.0 
     }] 

    } 
+0

不明または不明です。 'selectedRewards'がどこから来たのか、あるいは期待される結果が何であるかはわかりません。より詳細な説明を提供し、[mcve] – charlietfl

+0

の結果がjsonから "RewardTypeValue"キー/値を引いた値になるようにしてください。 – Ajax

+0

申し訳ありません...期待された結果より具体的になる – charlietfl

答えて

1

次固定私の問題:

コード:

$scope.rewards.push({"RewardType":selectedRewards.RewardType, "RewardCode":selectedRewards.RewardCode," "DiscountValue":selectedRewards.DiscountValue}); 
2

私は本当にあなたのコードでJSONを格納する変数であるものを得る、しかし、のはあなたの変数がmyJsonと呼ばれていると言うことはできませんし、あなたが共有した元のjsonに相当します。予想されるJSONを取得するには、あなたは何だろう:あなたはそれに慣れていない場合

var expectedJson = { 
    Reward: myJson.Reward.map(function(item) { 
    return { 
    RewardType: item.RewardType, 
    RewardCode: item.RewardCode, 
    DiscountValue: item.DiscountValue 
    } 
    }) 
} 

Array.prototype.mapを見てください: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

+0

メッセージを受け取るclientlibs.min.js:formatted:3289 TypeError:未定義のプロパティ 'map'を読み取ることができません。私はあなたの第1の質問に答える角1.4 – Ajax

+0

を使用しています:selectedRewardsは元のjsonを受け取ります。これは動的呼び出しであり、配列jsonサイズは定義されていません。 – Ajax

+0

あなたはあなたの 'selectedRewards'変数が満たされた直後に書いた数行のコードを呼び出します(pusheする前にjusteと言うでしょう) – ValLeNain

関連する問題