通过JavaScript引用从json树中删除对象

时间:2014-06-25 11:48:05

标签: javascript jquery json

我需要从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

之类的事情

2 个答案:

答案 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

Fiddle

更新

在上述情况下,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