2017-11-12 23 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

I하지 정말 코드에서 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