123456789101112131415161718192021222324 |
- /**
- * https://github.com/afc163/array-tree-filter
- */
- function arrayTreeFilter(data, filterFn, options) {
- options = options || {}
- options.childrenKeyName = options.childrenKeyName || 'children'
- let children = data || []
- const result = []
- let level = 0
- do {
- const 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
- }
-
- export default arrayTreeFilter
|