javascriptで再帰関数を作成しようとしていますが、正しく機能しません。私はオブジェクトデータのjson配列を持っています。私はキーに基づいて何かを見つけたいと思っていて、検索オブジェクトのgotopageキーに基づいて再度検索します。javascriptでjsonオブジェクトを検索する再帰関数
like:find orange - > gotopage - > orange_store - > orange_store - > gotopage - > yellow_store - >同じプロセスが再帰的に入ります。 。
[
{
"id": 1,
"find": "orange",
"gotopage": "orange_store"
},
{
"id": 2,
"find": "orange_store",
"gotopage": "yellow_store"
},
{
"id": 3,
"find": "black_store",
"gotopage": "black_store"
},
{
"id": 4,
"find": "yellow_store",
"gotopage": "white_store"
},
{
"id": 5,
"find": "black_store",
"gotopage": "red_store"
}
]
function searchRec(search, myArray) {
for (var i = 0; i < myArray.length; i++) {
var res = [];
if (myArray[i].find == search) {
if (myArray[i] !== null) {
console.log(myArray[i]);
res = searchRec(myArray[i].gotopage, myArray);
if (res !== null) {
return res;
}
return myArray[i];
}
}
}
}
function findNode(arr) {
for (i = 0; i < arr.length; i++) {
searchRec(arr[i].find, arr);
break;
}
}
console.log(findNode(json));
最初の反復のための出力にではなく、すべての反復のために働く:
Object {id: 1, find: "orange", gotopage: "orange_store"}
Object {id: 2, find: "orange_store", gotopage: "yellow_store"}
なぜ第三の目的は見つかりません。yellow_store? –
'searchRec'から返されたnullをチェックしていますが、nullを返すことはありません。 javascriptでは、配列内の欠落している要素のインデックスを作成すると、 'undefined'が返されます。 – ivo