dragon-mobile-ui
Version:
UI for react.js
22 lines (21 loc) • 562 B
JavaScript
function arrayTreeFilter(data, filterFn, options) {
options = options || {};
options.childrenKeyName = options.childrenKeyName || 'children';
let children = data || [];
let result = [];
let level = 0;
let foundItem;
do {
let foundItem = children.filter(function(item) {
return filterFn(item, level);
})[0];
if (!foundItem) {
break;
}
result.push(foundItem);
children = foundItem[options.childrenKeyName] || [];
level += 1;
} while(children.length > 0);
return result;
}
module.exports = arrayTreeFilter;