util-helpers
Version:
30 lines (27 loc) • 947 B
JavaScript
import { __assign } from 'tslib';
import { isArray, isObject } from 'ut2';
function filterTree(tree, predicate, childrenField, nodeAssign) {
if (childrenField === void 0) { childrenField = 'children'; }
if (nodeAssign === void 0) { nodeAssign = 'spread'; }
var result = [];
if (!isArray(tree)) {
return result;
}
tree.forEach(function (item) {
var newItem = item;
if (isObject(item)) {
newItem = nodeAssign === 'spread' ? __assign({}, item) : item;
}
if (predicate(newItem)) {
if (isObject(newItem)) {
var childs = newItem[childrenField];
if (isArray(childs) && childs.length > 0) {
newItem[childrenField] = filterTree(childs, predicate, childrenField, nodeAssign);
}
}
result.push(newItem);
}
});
return result;
}
export { filterTree as default };