js递归处理数组数据结构
·
1. 一维数组转成嵌套数组(递归)
// 处理tree 多层级
export let treeClassList = (array) => { //
let temp = {}
let tree = {}
// 数组转 键值对
console.log('array',array)
array.forEach(item => {
temp[item.ID] = item
})
let tempKeys = Object.keys(temp)
tempKeys.forEach(key => {
// 获取当前项
let item = temp[key]
// 当前项 Parent_ID
let _itemPId = item.Parent_ID
console.log('item',item)
// console.log(temp[_itemPId])
// 获取父级项
let parentItemByPid = temp[_itemPId]
if (parentItemByPid) {
if (!parentItemByPid.children) {
parentItemByPid.children = []
}
parentItemByPid.children.push(item)
} else {
tree[item.ID] = item
}
})
// 对象转数组并返回
return Object.keys(tree).map(key => tree[key])
}
2.二维数组转成一维数组 (递归)
var arr = [1, [2, [3, 4]]]
function flatten(arr) {
var result = []
for (var i = 0, len = arr.length; i < len; i++) {
if (Array.isArray(arr[i])) {
result = result.concat(flatten(arr[i]))
} else {
result.push(arr[i])
}
}
return result
}
console.log(flatten(arr))
更多推荐
所有评论(0)