array-tree-filter
Version:
filter in array tree
15 lines (14 loc) • 461 B
JavaScript
const arrayTreeFilter = (data, filterFn, { childrenKeyName = "children" } = {}) => {
const result = [];
let children = data;
for (let level = 0; children.length > 0; level++) {
const foundItem = children.find(item => filterFn(item, level));
if (!foundItem) {
break;
}
result.push(foundItem);
children = foundItem[childrenKeyName] || [];
}
return result;
};
export default arrayTreeFilter;