ノードと子を含むJSONツリーがあります-形式は次のとおりです。
jsonObject =
{
id:nodeid_1,
children: [
{
id:nodeid_2,
children:[]
},
{
id:nodeid_3,
children:[
{
id:nodeid_4,
children:[]
},
{
id:nodeid_5,
children:[]
}
}
}
このツリーの深さはわかりません。ノードは、多くの子を持つことができ、多くの子を持つことができます。
私の問題は、nodeIDを使用してこのツリーにノードを追加する必要があることです。たとえば、nodeIDとノードオブジェクト(その子を含む)を取得できる関数は、ツリー内のそのノードを置き換えることができます。その結果、より大きなツリーになります。
JSONツリー内のすべてのノードをトラバースできる再帰関数に出くわしただけで、これらの関数の1つを変更すると、ノードオブジェクトが返されますが、元のツリーを変更する必要があるため、役に立ちません。 :
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ツリーの値を変更するにはどうすればよいですか?
前もって感謝します