従来の再帰ループを書きましたが、条件が満たされた場合、値を返さずにループを続けます。壊そうとしたが止まらない。
私のコードとJSONは以下の通りです。ただし、IDが「2」の場合、値が期待どおりに1回入力されることがコンソールに表示されます。また、ディップ検索も正しく行われますutil.iterate(json)
が、呼び出し元の関数オブジェクトの値を呼び出す関数によって返されたオブジェクトを調べると、undefined
util.iterate = function (obj){
for(var i in obj)
{
if( i === "id" && obj[i] === "2"){
console.log("test" +obj[i] );
return obj;
//break; does not work either
}
else if (typeof(obj[i])=="object"){
this.iterate(obj[i]);
}
}
}
JSON :
{
"id": "0",
"item": [{
"id": "1",
"text": "1111",
"userdata": [{
"name": "name",
"content": "BK"
}]
},
{
"id": "2",
"select": "1",
"text": "222222",
"item": [{
"id": "21",
"text": "child"
}]
},
{
"id": "3",
"text": "3333"
}]
}