在JavaScript中通过引用从json树中删除对象
我需要从JSON树中删除一个对象。我知道有人提到过那个物体。除了遍历整个树之外,还有没有一种通过JavaScript或jQuery实现的好方法 例如:在JavaScript中通过引用从json树中删除对象,javascript,jquery,json,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-95F
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]
。我想做一些类似于删除联系人的事情,它只有一种工作方式:一个变量持有一个引用,但是没有办法给出一个特定的引用来推断哪些变量持有它(不经过迭代和比较)。你可以这样删除它。我刚测试过
var party = {
// ...
}
alert(party.properties.CONTACT[0]) // object Object
delete party.properties.CONTACT[0] // true
alert(party.properties.CONTACT[0]) // undefined
更新
在上述情况下,参与方
是窗口
对象的直接属性
window.hasOwnProperty('party'); // true
这就是为什么不能通过引用删除属性。无论如何,delete操作符对宿主对象的行为是不可预测的。但是,您可以围绕参与方
对象创建一个范围,然后允许您删除它
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
好的,这就是为什么要通过引用从和数组中查找项索引。例如
find(party.properties.contact,ctc)=1
其中ctc=party.properties.contact[1]
@Marius:yep,只需迭代数组并进行比较。是的,这很有效,但我无法使用引用。无论如何,我可以这样做:var-properties=$scope.party.properties[category];var propIdx=$.inArray(属性,属性);特性.拼接(propIdx,1)代码>@Marius检查更新的答案。我相信现在一切都清楚了:)