[英]Delete object from json tree by reference in JavaScript
我需要從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
。
它僅以一種方式起作用:變量持有引用,但是沒有給定特定引用的方式來推斷哪些變量持有引用(無需遍歷它們並進行比較)。
您可以通過這種方式將其刪除。 我剛剛測試過。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.