util-helpers
Version:
32 lines (28 loc) • 960 B
JavaScript
;
var tslib = require('tslib');
var ut2 = require('ut2');
function filterTree(tree, predicate, childrenField, nodeAssign) {
if (childrenField === void 0) { childrenField = 'children'; }
if (nodeAssign === void 0) { nodeAssign = 'spread'; }
var result = [];
if (!ut2.isArray(tree)) {
return result;
}
tree.forEach(function (item) {
var newItem = item;
if (ut2.isObject(item)) {
newItem = nodeAssign === 'spread' ? tslib.__assign({}, item) : item;
}
if (predicate(newItem)) {
if (ut2.isObject(newItem)) {
var childs = newItem[childrenField];
if (ut2.isArray(childs) && childs.length > 0) {
newItem[childrenField] = filterTree(childs, predicate, childrenField, nodeAssign);
}
}
result.push(newItem);
}
});
return result;
}
module.exports = filterTree;