我从多选项目中获取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
}]
}
我真的不知道在你的代码中存储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
以下修复了我的问题:
码:
$scope.rewards.push({"RewardType":selectedRewards.RewardType, "RewardCode":selectedRewards.RewardCode," "DiscountValue":selectedRewards.DiscountValue});