首页 > 解决方案 > 递归包含嵌套对象数组的对象数组以返回数组

问题描述

我收到了一组包含问题和子问题(如果存在)的对象。子问题可以具有对象的嵌套数组,该对象又可以具有对象的嵌套数组,依此类推。

例如

 let survey = [
     {question: 'some question 1'},
     { 
       question: 'some question 2', 
       subQues: [{ question: 'some question 3' }] 
     },
     { 
      question: 'some question 4', 
      subQues: [
       { question: 'some question 5', 
        subQues: [ 
          { question: 'some question 6', 
            subQues: [{ question: 'some question 7' }] 
          } 
        ] 
      } 
     ] 
   },
  {question: 'some question 8'}
]

预期的输出应该是一个包含子问题内所有问题的数组

输出-> a = ['some question 1','some question 2','some question 3','some question 4','some question 5','some question 6','some question 7','some question 8']

我需要递归地解决这个问题,因为不知道嵌套可以发生多少次。我使用这样的递归尝试了这个问题->

我的解决方案

function recursion(surveyData) {
  let a = []
  for(let i = 0; i < surveyData.length; i++) {
    if(surveyData[i].subQues) {
      a.push({question: surveyData[i].question})
      recursion(surveyData[i].subQues)
    }
    else {
      a.push({question: surveyData[i].question})
    }
  }
  return a
}

尽管我没有收到错误,但结果不是我所期望的

我的输出

['一些问题 1','一些问题 2','一些问题 4','一些问题 8',]

任何帮助将不胜感激。

标签: javascriptarraysalgorithmobjectrecursion

解决方案


推荐阅读