我有以下json。我想遍历这个并获取那些'check'值为'true'的键的值。
{
"A_B":{
"ID":"09|_|06",
"address":"ABC",
"name":"2222222222",
"Documents":{
"1":{
"format":"xlsx"
},
"2":{
"format":"pdf"
}
},
"check":true
},
"C_B":{
"ID":"0a|_|0b",
"address":"Los Angeles",
"name":"4444444444",
"Documents":{
"1":{
"format":"docx"
},
"4":{
"format":"xlsx"
}
},
"check":true
},
"C_E":{
"ID":"05|_|06",
"address":"",
"name":"1111111111",
"Documents":{
"5":{
"format":"xlsx"
}
},
"check":false
}
}
在上面的示例json中,应将A_B和C_B的值添加到新的json中。新的json看起来像
{
"A_B":{
"ID":"09|_|06",
"address":"ABC",
"name":"2222222222",
"Documents":{
"1":{
"format":"xlsx"
},
"2":{
"format":"pdf"
}
},
"check":true
},
"C_B":{
"ID":"0a|_|0b",
"address":"Los Angeles",
"name":"4444444444",
"Documents":{
"1":{
"format":"docx"
},
"4":{
"format":"xlsx"
}
},
"check":true
}
}
我可以使用以下代码获取那些ID [A_B和C_B],其中'check'=== true,
var IDs = Object.keys(completeJson);
var checkTrueIDs = IDs.reduce(function(initArr,ID) {
if(completeJson.check === true) {
initArr.push(ID);
}
return initArr;
},[]);
console.log("IDs wth check === true - " + checkTrueIDs);
但是,我无法获得这些ID的完整对象并将它们添加到新的JSON中。如果我做
var newJson = {}
然后在if条件内(推送下方)
newJson = completeJson[ID];
这会覆盖以前的值,所以最后我只剩下一个对象。
答案 0 :(得分:0)
您可以迭代您拥有的对象,如果其键检查为true,则将其添加到newJson对象。
var newJson ={};
angular.forEach(completeJson, function(value, key) {
if(value.check){
newJson[key] = value;
}
});
console.log(newJson);