我有一个JavaScript对象,如下所示:
var obj = {
"id": 1098
"someData": {},
"children": [
{
"id": 2124
"someData": {},
"children": [...]
},
{
"id": 1298,
"someData": {},
"children": [
{
"id": 1290,
"someData": {},
"children": [...]
}
]
]
}
正如您所看到的,父对象始终是具有id的对象,一些数据和子对象具有与父对象相同的结构。理论上它可以无限嵌套。
我现在需要两个操作:添加和删除在此结构中的某处。
"将此对象添加为父级的子级,ID为1298"
"删除ID为2124"
也许甚至有一个框架可以处理递归数据?
答案 0 :(得分:0)
您必须使用递归方法找到所需的对象。获取并推送新数据或删除对象。
function findObjectById(root, id, action) {
if (root.children) {
for (var k in root.children) {
if (root.children[k].id == id) {
if(action=="fetch")
return root.children[k];
else
delete root.children[k];
}
else if (root.children[k].children.length) {
return findObjectById(root.children[k], id);
}
}
}
};
像这样推送新数据。
var parent = findObjectById(obj, 1298, "fetch");
parent.children.push({
someData: {},
id: 1234,
children: []
});
删除这样的对象。
findObjectById(obj, 2124, "delete");