Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
var data = "1,menu1,3000\n\
2,menu1_1,5000\n\
2,menu1_2,6000\n\
2,menu1_3,7000\n\
1,menu2,8000\n\
2,menu2_1,5000\n\
3,menu2_1_1,5000\n\
3,menu2_1_2,7000\n\
2,menu2_2,6000\n\
2,menu2_3,7000\n\
1,menu3,9000\n\
1,menu4,10000"
var array = data.split("\n").map(function(row, index) { 
  var arr = row.split(",")
  return {
    id: index+1,
    level: +arr[0],
    label: arr[1],
    price: arr[2],
    children: []
  }
})
array.unshift({ level: 0, children: [] })
var parents = array.slice(0,1)
for(var i=1; i<array.length; i++) {
  var prev = array[i-1]
  var obj = array[i]
  var p = parents[parents.length-1]
  if(obj.level > prev.level) {
    parents.push(prev)
    p = prev
  } else if (obj.level < prev.level) {
    do {
      p = parents.pop()
    } while(obj.level < p.level)
    p = parents[parents.length-1]
  }
  p.children.push(obj)
}
var result = parents[0].children
console.log(result)
Output 300px

This bin was created anonymously and its free preview time has expired (learn why). — Get a free unrestricted account

Dismiss x
public
Bin info
anonymouspro
0viewers