Javascript 如何在递归嵌套对象中查找、插入和删除属性
我有一个JavaScript对象,如下所示:Javascript 如何在递归嵌套对象中查找、插入和删除属性,javascript,json,recursion,underscore.js,nest-nested-object,Javascript,Json,Recursion,Underscore.js,Nest Nested Object,我有一个JavaScript对象,如下所示: var obj = { "id": 1098 "someData": {}, "children": [ { "id": 2124 "someData": {}, "children": [...] }, { "id": 1298, "someData": {}, "children": [ { "id":
var obj = {
"id": 1098
"someData": {},
"children": [
{
"id": 2124
"someData": {},
"children": [...]
},
{
"id": 1298,
"someData": {},
"children": [
{
"id": 1290,
"someData": {},
"children": [...]
}
]
]
}
正如您所看到的,父对象始终是一个具有id的对象,一些数据和子对象与父对象具有相同的结构。理论上,它可以无限嵌套
我现在需要两个操作:添加和删除
- “将此对象添加为id为1298的父对象的子对象”
- “删除id为2124的对象”
也许有一个框架可以处理递归数据?您必须使用递归方法找到所需的对象。获取并推送新数据或删除对象
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");
删除这样的对象
var parent = findObjectById(obj, 1298, "fetch");
parent.children.push({
someData: {},
id: 1234,
children: []
});
findObjectById(obj, 2124, "delete");
您可以使用for(在您的结构中键入)
循环,并在childrens上设置条件!