Angular - 将值附加到json

时间:2016-09-09 08:00:45

标签: javascript angularjs json

我有以下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];

这会覆盖以前的值,所以最后我只剩下一个对象。

1 个答案:

答案 0 :(得分:0)

您可以迭代您拥有的对象,如果其键检查为true,则将其添加到newJson对象。

var newJson ={};
    angular.forEach(completeJson, function(value, key) {
    if(value.check){
    newJson[key] = value;
    }
   });
console.log(newJson);