VagueExplanation VagueExplanation - 5 months ago 10
Javascript Question

Best way to create many branching arrays in JavaScript

I could write shorthand objects, but then I'll have a ton of indents of other arrays and objects inside. This is for a question form with many branching new sets of questions based on the last one anawered. Any suggestions on how this code should be designed?

Answer

Other solution with less typing:

var d = {
'':  {/*data*/},
'1': {/*data*/},
'1.1': {/*data*/},
..
'3.2.3.4': {/*data*/}
}
for(var k in d){//build tree structure
  var a = k.split('.')
  var i = a.pop()
  var parent = a.join()
  if(parent in d){//parent exists
    d[parent].children.push({i: +i, k: k})//to prevent holes
  }
  else {
    console.log('pending subtree: ' + k)
  }
}
for(var k in d){//transform child array
  d[k].children = d[k].children
    .sort(function(a,b){return a.i-b.i})
    .map(function(x){return d[x.k]})
}
Comments