$(function(){
 
  var jsonArray = [], flattenedJsonArray = [], flattenedAndFilterdJsonArray = [], 
  fullRenderedlist = [], flattenedRenderedlist = [], flattenedAndFilteredRenderedlist = [];
  
  $.getJSON('nav.json', function(data) {       
    jsonArray = data;  
  }).done(function(){
    
    // Full tree list - not flattened        
    renderedlist = buildListFromJsonArray(jsonArray);      
    
    // Flattened JSON and rendered list
    flattenJsonArray(jsonArray, flattenedJsonArray, "children");  
    flattenedRenderedlist = buildListFromJsonArray(flattenedJsonArray);   
    
    // Flattened and filtered rendered list
    flattenedAndFilterdJsonArray = $.grep(flattenedJsonArray, function(item, index){
      return item.name.indexOf("Lvl.2") !== -1;
    });
    
    flattenedAndFilteredRenderedlist = buildListFromJsonArray(flattenedAndFilterdJsonArray);   
   
    $(document.body).append(renderedlist);
    $(document.body).append(flattenedRenderedlist);
    $(document.body).append(flattenedAndFilteredRenderedlist);    
  });   

});

// Flattens an array using recursion.
function flattenJsonArray(originalArray, flattenedArray, propertyArrayName) {
    if (!originalArray) return;
    
    $.each(originalArray, function (index, item) {
        if (item[propertyArrayName].length === 0) {
            flattenedArray.push(item);
        } else {
            var newItem = jQuery.extend(true, {}, item);
            newItem[propertyArrayName] = [];
            flattenedArray.push(newItem);
            flattenJsonArray(item[propertyArrayName], flattenedArray, propertyArrayName);
        }
    });
}

function buildListFromJsonArray(data, $linkObject, levelDepth) {    
    if (typeof(data) !== 'object') return;
            
    var list = $('<ul />');
    
    var curDepth;
    if(levelDepth){
      curDepth = parseInt(levelDepth, 10);
      list.addClass("level" + curDepth);
    }else{
      curDepth = 0;
    }
    
    if($linkObject){
      list.append($linkObject);
    }
    
    $.each(data, function(index, item) {           
      var listItem = $("<li />");
      
      // Add classes for first or last list item
      if(index === 0){
        listItem.addClass("first");
      }else{
        if(index === (data.length - 1)){
          listItem.addClass("last");
        }
      }
      
      // Add link
      var link = $("<a />");
      link.attr("href", item.url);
      link.text(item.name);
      listItem.append(link);            
      
      if(item.children && item.children.length > 0){
        listItem.addClass("hasList");
        
        // Add show children button
        var showChildrenLink = $("<span />");
        showChildrenLink.addClass("showChildren");
        showChildrenLink.text(" > ");
        listItem.append(showChildrenLink);
        
        var navBackLink= $("<span />");
        navBackLink.addClass("backLink");
        navBackLink.text(" < ");                
                
        navBackLink = navBackLink.add(link.clone());
        
        var newDepth = curDepth + 1;
        listItem.append(buildListFromJsonArray(item.children, navBackLink, newDepth));
      }      
      list.append(listItem);       
    });    
    
    return list;    
}
[
    {
        "name": "Home",
        "url": "https://twitter.com/rafszul",
        "children": []
    },
    {
        "name": "About Us",
        "url": "#",
        "children": [
            {
                "name": "Lvl.2 Page 1",
                "url": "#",
                "children": []
            },
            {
                "name": "Lvl.2 Page 2",
                "url": "#",
                "children": []
            },
            {
                "name": "Lvl.2 Page 3",
                "url": "#",
                "children": [
                    {
                        "name": "Lvl.3 Page 1",
                        "url": "#",
                        "children": []
                    },
                    {
                        "name": "Lvl.3 Page 2",
                        "url": "#",
                        "children": []
                    },
                    {
                        "name": "Lvl.3 Page 3",
                        "url": "#",
                        "children": []
                    },
                    {
                        "name": "Lvl.3 Page 4",
                        "url": "#",
                        "children": []
                    },
                    {
                        "name": "Lvl.3 Page 5",
                        "url": "#",
                        "children": []
                    }
                ]
            },
            {
                "name": "Lvl.2 Page 4",
                "url": "#",
                "children": []
            },
            {
                "name": "Lvl.2 Page 5",
                "url": "#",
                "children": []
            }
        ]
    },
    {
        "name": "News",
        "url": "#",
        "children": []
    },
    {
        "name": "Events",
        "url": "#",
        "children": [
            {
                "name": "Lvl.2 Page 1",
                "url": "#",
                "children": []
            },
            {
                "name": "Lvl.2 Page 2",
                "url": "#",
                "children": []
            },
            {
                "name": "Lvl.2 Page 3",
                "url": "#",
                "children": [
                    {
                        "name": "Lvl.3 Page 1",
                        "url": "#",
                        "children": []
                    },
                    {
                        "name": "Lvl.3 Page 2",
                        "url": "#",
                        "children": []
                    },
                    {
                        "name": "Lvl.3 Page 3",
                        "url": "#",
                        "children": []
                    },
                    {
                        "name": "Lvl.3 Page 4",
                        "url": "#",
                        "children": []
                    },
                    {
                        "name": "Lvl.3 Page 5",
                        "url": "#",
                        "children": []
                    }
                ]
            },
            {
                "name": "Lvl.2 Page 4",
                "url": "#",
                "children": []
            },
            {
                "name": "Lvl.2 Page 5",
                "url": "#",
                "children": []
            }
        ]
    },
    {
        "name": "Contact Us",
        "url": "#",
        "children": []
    },
    {
        "name": "Sitemap",
        "url": "#",
        "children": []
    }
]
<!DOCTYPE html>
<html>

  <head lang="en">
    <meta charset="utf-8">
    <title>Custom Plunker</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript" src="script.js"></script>
    
  </head>
  
  <body>
    
    
    
  </body>
  
</html>