У меня есть дерево JSON, которое содержит узлы и дочерние элементы - формат:
jsonObject =
{
id:nodeid_1,
children: [
{
id:nodeid_2,
children:[]
},
{
id:nodeid_3,
children:[
{
id:nodeid_4,
children:[]
},
{
id:nodeid_5,
children:[]
}
}
}
Я не знаю глубину этого дерева, узел может иметь много дочерних элементов, которые также имеют многодети и т. д.
Моя проблема заключается в том, что мне нужно добавить узлы в это дерево с помощью ID узла.Например, функция, которая может принимать идентификатор узла и объект узла (включая его дочерние элементы), сможет заменить этот узел в дереве, что в результате станет большим деревом.
У меня есть тольконатолкнуться на рекурсивные функции, которые позволяют мне проходить все узлы в дереве JSON, и изменение, которое я внес в одну из этих функций, возвращает мне объект узла - но это не помогает, так как мне нужно изменить исходное дерево:
var findNode = {
node:{},
find:function(nodeID,jsonObj) {
if( typeof jsonObj == "object" ) {
$.each(jsonObj, function(k,v) {
if(v == nodeID) {
findNode.node = $(jsonObj).eq(0).toArray()[0];
} else {
findNode.find(nodeID,v);
}
});
} else {
//console.log("jsobObj is not an object");
}
}
}
, который позволяет мне выполнить следующий тест:
findNode.find("nodeid_3",json);
alert(findNode.node);
Итак, подведем итог - как я могу изменить значение дерева JSON с неизвестной глубиной?
Заранее спасибо