簡體   English   中英

通過JavaScript中的引用從JSON樹中刪除對象

[英]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

小提琴

更新

在上述情況下, partywindow對象的直接屬性

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM