我是一个Javascript的乞丐,我目前正在尝试寻找从axios GET请求返回的JSON对象的所有可能路径。每个项目可以属于一个或多个组,一个组可以属于另一个组。
{
"name": "item1",
"groupNames": [ "GROUPA" ]
}
{
"name": "GROUPA",
"groupNames": [
"GROUPB"
]
}
....
{
name: "GROUPZ"
"groupNames": [
]
}
我的问题是我的代码只有在数组中一个项目名称只有一个父groupName的情况下才有效。如果我们有多个父groupName呢?例如
{
"name": "item1",
"groupNames": [ "GROUPA","GROUC",GROUBD ]
}
...
我的当前代码:
let parent = 'item1';
do{
let endpoint = ${process.env.OPENHAB_HOST}:${process.env.OPENHAB_PORT}/rest/items/${parent}?recursive=false
result = await getAxiosRequest(endpoint,{},res); // get request to specific endpoint
parent = result.data.groupNames; }
while(result.data.groupNames.length !== 0 )
2条答案
按热度按时间vsdwdz231#
若要查找具有多个父组的项的所有父组,可以按如下所示修改代码:
初始化一个名为parents的数组来存储您找到的父组。在循环中,不要将parent赋值给result.data.groupNames,而是遍历result.data.groupNames并将每个组添加到parents数组中。循环结束后,parents将包含给定项的所有父组。修改后的代码如下所示:
即使项具有多个父组,此操作也应该起作用。
bfrts1fy2#
循环运行后的最终结果应该是什么并不完全清楚,但我假设您可能会从数组中的给定项 * 收集 * 路径。
因为您确实可以获得多个组,所以您需要将它们存储在队列/堆栈中以供以后处理,或者使用递归(出于同样的原因)。
下面是使用递归时的情况: