util-helpers
Version:
36 lines (32 loc) • 973 B
JavaScript
;
var ut2 = require('ut2');
function findTreeNode(tree, predicate, childrenField) {
if (childrenField === void 0) { childrenField = 'children'; }
var stack = [];
var node;
if (ut2.isArray(tree)) {
ut2.forEach(tree, function (item) {
stack.push(item);
while (stack.length) {
var temp = stack.pop();
if (predicate(temp)) {
node = temp;
break;
}
if (ut2.isObject(temp)) {
var childs = temp[childrenField];
if (ut2.isArray(childs) && childs.length > 0) {
childs.forEach(function (c) {
stack.push(c);
});
}
}
}
if (node) {
return false;
}
});
}
return node;
}
module.exports = findTreeNode;