Angular:如何使用特定键过滤json

问题描述 投票:0回答:2

我从多选项目中获取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
        }]

    }

在下面的代码中,我试图在为“selectedRewards”调用“push”之前只获取RewardType,RewardCode和DiscountType

角度代码:

  $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
        }]

    }
angularjs aem cq5 aem-6
2个回答
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.maphttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map


1
投票

以下修复了我的问题:

码:

$scope.rewards.push({"RewardType":selectedRewards.RewardType, "RewardCode":selectedRewards.RewardCode," "DiscountValue":selectedRewards.DiscountValue});
© www.soinside.com 2019 - 2024. All rights reserved.