export function flatArray (data = [], childrenName = 'children') { const result = [] const loop = (array) => { array.forEach(item => { if (item[childrenName]) { const newItem = { ...item } delete newItem[childrenName] result.push(newItem) if (item[childrenName].length > 0) { loop(item[childrenName]) } } else { result.push(item) } }) } loop(data) return result } export function treeMap (tree, mapper, childrenName = 'children') { return tree.map((node, index) => { const extra = {} if (node[childrenName]) { extra[childrenName] = treeMap(node[childrenName], mapper, childrenName) } return { ...mapper(node, index), ...extra, } }) } export function flatFilter (tree, callback) { return tree.reduce((acc, node) => { if (callback(node)) { acc.push(node) } if (node.children) { const children = flatFilter(node.children, callback) acc.push(...children) } return acc }, []) } // export function normalizeColumns (elements) { // const columns = [] // React.Children.forEach(elements, (element) => { // if (!React.isValidElement(element)) { // return // } // const column = { // ...element.props, // } // if (element.key) { // column.key = element.key // } // if (element.type && element.type.__ANT_TABLE_COLUMN_GROUP) { // column.children = normalizeColumns(column.children) // } // columns.push(column) // }) // return columns // }