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);