JavaScript循环嵌套数组
我正在用从API接收的数据构建一个数组 API的结果包含站点上所有页面的平面数组。我想创建一个新的数组,使其多维化,这样一个页面就可以有子页面,子页面可以有自己的子页面等等 如果我可以使其工作,则需要阵列:JavaScript循环嵌套数组,javascript,Javascript,我正在用从API接收的数据构建一个数组 API的结果包含站点上所有页面的平面数组。我想创建一个新的数组,使其多维化,这样一个页面就可以有子页面,子页面可以有自己的子页面等等 如果我可以使其工作,则需要阵列: array = [{id:1, children:[] } // No children ,{id:2, children:[{id:3, children:[]}]} // One level of children ,
array =
[{id:1, children:[] } // No children
,{id:2, children:[{id:3, children:[]}]} // One level of children
,{id:4, children:[{id:5, children:[{id:6, children:[]}]}]} // Two levels of children etc...
]
所以我现在在循环API数据时首先检查元素是否有子元素。如果它没有任何子元素,我只需将它按原样添加到数组中,但额外添加一个空的children[]
如果元素有父元素,我将获得必须在自定义数组中搜索的parentId
if(!element.parent){
array.push(element);
continue;
}
// Now I know this element has a parent. So the fun begins.
var parentId = element.parent.id; // Here I have the parent ID
// Example of a none working append (because I dont know the depth)
for(var i = 0; i < array.length; i++){
if(array[i].id === parentId){
array[i].children.push(element);
}
}
if(!element.parent){
array.push(元素);
继续;
}
//现在我知道这个元素有一个父元素。于是,乐趣开始了。
var parentId=element.parent.id;//这是我的家长ID
//无工作追加的示例(因为我不知道深度)
对于(var i=0;i
因此,问题是如何循环遍历所有这些可能的子级以找到匹配项并将其正确附加到我的自定义数组中?也许此代码示例可以引导您朝着正确的方向前进:
var buildTree=函数(arr,父级){
var结果=[];
var子树=arr.filter((e)=>e.parent==parent);
对于(变量i=0;i 控制台日志(结果)代码>也许此代码示例可以引导您走向正确的方向:
var buildTree=函数(arr,父级){
var结果=[];
var子树=arr.filter((e)=>e.parent==parent);
对于(变量i=0;i 控制台日志(结果)代码>也许你可以看看Array.prototype.flatMap()
,可能会很有用。欢迎来到堆栈溢出!请拿着(你得到了一枚徽章!)通读一下,尤其是你最好的选择是做你的研究,做相关的主题,然后试一试。如果你在做了更多的研究和搜索后陷入困境,无法摆脱困境,请发布一份你的尝试,并明确指出你陷入困境的地方。人们会很乐意提供帮助。我不完全理解你的问题,但很可能你想使用递归这个答案可以指导你递归地构建你想要的数组。您好,是的,我正在研究递归,但我仍然不能围绕解决方案进行思考。我理解一个基本的递归,但在这个例子中,跟踪数组中的级别降低会让我感到困惑。用更多的代码更新了我的问题,以更好地解释预期结果。也许你可以看看Array.prototype.flatMap()
,可能会很有用。欢迎来到堆栈溢出!请拿着(你得到了一枚徽章!)通读一下,尤其是你最好的选择是做你的研究,做相关的主题,然后试一试。如果你在做了更多的研究和搜索后陷入困境,无法摆脱困境,请发布一份你的尝试,并明确指出你陷入困境的地方。人们会很乐意提供帮助。我不完全理解你的问题,但很可能你想使用递归这个答案可以指导你递归地构建你想要的数组。您好,是的,我正在研究递归,但我仍然不能围绕解决方案进行思考。我理解一个基本的递归,但在这个例子中,跟踪数组中的级别降低会让我感到困惑。用更多的代码更新了我的问题,以更好地解释预期结果。