UNPKG

util-helpers

Version:

一个基于业务场景的工具方法库

32 lines (28 loc) 960 B
'use strict'; 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;