我需要从JSON树中删除一个对象。我知道对那个对象的引用。除了遍历整个树之外,还有一种很好的方法可以通过JavaScript或jQuery来实现吗?
示例:
party = {
"uuid": "4D326531-3C67-4CD2-95F4-D1708CE6C7A8",
"link": {
"rel": "self",
"href": "http://localhost:8080/cim/party/4D326531-3C67-4CD2-95F4-D1708CE6C7A8"
},
"type": "PERSON",
"name": "John Doe",
"properties": {
"CONTACT": [
{
"category": "CONTACT",
"type": "EMAIL",
"key": "email",
"value": "john.doe@doe.at",
"id": "27DDFF6E-5235-46BF-A349-67BEC92D6DAD"
},
{
"category": "CONTACT",
"type": "PHONE",
"key": "mobile",
"value": "+43 999 999990 3999",
"id": "6FDAA4C6-9340-4F11-9118-F0BC514B0D77"
}
],
"CLIENT_DATA": [
{
"category": "CLIENT_DATA",
"type": "TYPE",
"key": "client_type",
"value": "private",
"id": "65697515-43A0-4D80-AE90-F13F347A6E68"
}
]
},
"links": []
}
我有一个参考:contact = party.properties.contact[1]
。我想做delete contact
。
答案 0 :(得分:1)
它只能以一种方式工作:一个变量保存一个引用,但是没有办法给出一个特定的引用来推断哪些变量保存它(没有迭代它们并进行比较)。
答案 1 :(得分:1)
你可以这样删除它。我刚试过它。
var party = {
// ...
}
alert(party.properties.CONTACT[0]) // object Object
delete party.properties.CONTACT[0] // true
alert(party.properties.CONTACT[0]) // undefined
更新
在上述情况下,party
是window
对象
window.hasOwnProperty('party'); // true
这就是为什么你不能通过引用删除属性。无论如何,删除操作符与主机对象的行为是不可预测的。但是,您可以围绕party
对象创建范围,然后您将被允许删除它。
var _scope = {};
var _scope.party = {
// ...
};
var r = _scope.party.properties.CONTACT[0];
window.hasOwnProperty('party'); // false
alert(r) // object Object
delete r // true
alert(r) // undefined