输入:
扁平化输出:
{
code: int,
text: str,
parentCode: int,
parentText: str,
grandParentCode: int,
grandParentText: str
}[]
/**
* @desc 将三级数组扁平化为带有父级及以上节点
* @param {array} source
* @return {object} 伪数组
*/
export function deepTraversalCity (source, list = { length: 0 }, grand = {}, par = {}, depth = 0) {
depth++
for (var key in source) {
const item = source[key]
if (!item.children || item.children.length === 0) {
item.parentCode = par.code
item.parentText = par.text
item.grandParentCode = grand.code
item.grandParentText = grand.text
delete item.children
const temp = list.length
list[temp] = item
list.length++
} else {
depth === 1 && (grand = item)
deepTraversalCity(item.children, list, grand, item, depth)
}
}
return list
}