util-helpers
Version:
34 lines (31 loc) • 971 B
JavaScript
import { isArray, forEach, isObject } from 'ut2';
function findTreeNode(tree, predicate, childrenField) {
if (childrenField === void 0) { childrenField = 'children'; }
var stack = [];
var node;
if (isArray(tree)) {
forEach(tree, function (item) {
stack.push(item);
while (stack.length) {
var temp = stack.pop();
if (predicate(temp)) {
node = temp;
break;
}
if (isObject(temp)) {
var childs = temp[childrenField];
if (isArray(childs) && childs.length > 0) {
childs.forEach(function (c) {
stack.push(c);
});
}
}
}
if (node) {
return false;
}
});
}
return node;
}
export { findTreeNode as default };