You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
892 B
39 lines
892 B
5 months ago
|
var setupDefaults = require('./setupDefaults')
|
||
|
|
||
|
var each = require('./each')
|
||
|
|
||
|
var assign = require('./assign')
|
||
|
|
||
|
function unTreeList (result, array, opts) {
|
||
|
var optChildren = opts.children
|
||
|
var optData = opts.data
|
||
|
var optClear = opts.clear
|
||
|
each(array, function (item) {
|
||
|
var children = item[optChildren]
|
||
|
if (optData) {
|
||
|
item = item[optData]
|
||
|
}
|
||
|
result.push(item)
|
||
|
if (children && children.length) {
|
||
|
unTreeList(result, children, opts)
|
||
|
}
|
||
|
if (optClear) {
|
||
|
delete item[optChildren]
|
||
|
}
|
||
|
})
|
||
|
return result
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 将一个树结构转成数组列表
|
||
|
*
|
||
|
* @param {Array} array 数组
|
||
|
* @param {Object} options { children: 'children', data: 'data', clear: false }
|
||
|
* @return {Array}
|
||
|
*/
|
||
|
function toTreeArray (array, options) {
|
||
|
return unTreeList([], array, assign({}, setupDefaults.treeOptions, options))
|
||
|
}
|
||
|
|
||
|
module.exports = toTreeArray
|