recursion search + path

by Artem

JavaScript

'use strict';

var treeDataSource = [{
  id: 1,
  Name: "Test1",
  items: [{
    id: 4,
    Name: "Test4",
    items: [{
      id: 7,
      Name: "Test7"
    }]
  },
  {
    id: 55,
    Name: "Test55"
  }]
}, {
  id: 2,
  Name: "Test2",
  items: [{
    id: 5,
    Name: "Test5",
    items: [{
      id: 8,
      Name: "Test8"
    }]
  }]
}, {
  id: 3,
  Name: "Test3",
  items: [{
    id: 6,
    Name: "Test6",
    items: [{
      id: 9,
      Name: "Test9"
    }]
  }]
}];


function over(num, history = []) {
  var getSubMenuItem = function(subMenuItems, id, parent = null) {
    if (subMenuItems) {
      for (var i = 0; i < subMenuItems.length; i++) {
        if (subMenuItems[i].id == id) {
          history.push(subMenuItems[i].Name);
          return history; // !
          //return subMenuItems[i];
        }

        history.push(subMenuItems[i].Name); // ?
        var found = getSubMenuItem(subMenuItems[i].items, id, history);
        if (!found) history.pop();
        if (found) return found;
      }

    } else {
      //history = [];
    }
  };
  return getSubMenuItem(treeDataSource, num);
}

var searchedItem = over(8);
console.log(searchedItem);

var filterPath = function(path) {
  var item = path[path.length - 1];
};

var filtered = filterPath(searchedItem);