js⼀维数组,转成嵌套数组// 情况⼀:
// 数据源
var egs = [
{name_1: ''},
{name_2: ''},
{name_3: ''},
{name_0: ''},
].reverse()
// 最终想要的数据形式
// {name_1: '',
// children: [
/
/ {name_2: '',
// children: [
// {name_3: ''},
// ]
// }
// ]
// }
var result = {}
var key ='children'
s(egs)
function s(arrs) {
arrs.forEach((o, i) => {
console.log('---'+ i + ': ', result)
js逗号分割的字符串转数组if (!result[key]) {
result[key] = [o]
} else {
o[key] = [result]
result = o
}
})
}
console.log(result)
/
/ 情况⼆:
// pId 对应⽗级 id
let arr = [
{ pId: '-1', id: '0', name: '⽗级1' },
{ pId: '0', id: '1', name: '⽗级1-1' },
{ pId: '0', id: '2', name: '⽗级1-2' },
{ pId: '2', id: '21', name: '⼦级21' },
]
function buildTree (arr) {
let temp = {}
let tree = {}
/
/ 数组转键值对
arr.forEach(item => {
temp[item.id] = item
})
let tempKeys = Object.keys(temp)
tempKeys.forEach(key => {
// 获取当前项
let item = temp[key]
// 当前项 pId
let _itemPId = item.pId
// 获取⽗级项
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]) }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论