gpt4 book ai didi

javascript - 在javascript中搜索json对象的递归函数

转载 作者:行者123 更新时间:2023-11-30 15:05:15 27 4
gpt4 key购买 nike

我正在尝试用 javascript 编写一个递归函数,但无法正常工作。我有一个对象数据的 json 数组,我想在其中根据键找到一些东西,然后根据搜索对象中的 gotopage 键再次找到。

like : find orange -> gotopage -> orange_store ->find -> orange_store -> gotopage -> yellow_store -> find 所以相同的过程递归地进行。你能帮助我在我的方法中出错的地方吗?

[
{
"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"}

最佳答案

另一个使用递归的例子。我做了一个简单的 forEach() 来找到您要查找的内容并将其存储在变量中,记录它,然后使用我们新创建的值重新调用该函数。如果它没有找到任何东西,它返回 null 并结束。

const data = [
{
"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 recursiveStore(search, myArray) {
let obj = {}
let newSearch;
data.forEach(store => {
if (search === store.find) {
obj = store
newSearch = store.gotopage
}
})
if (Object.keys(obj).length === 0) {
return null
}
console.log(obj)
recursiveStore(newSearch, myArray)
}

recursiveStore("orange", data)

关于javascript - 在javascript中搜索json对象的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45865453/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com