版权声明:我写的你不能转载,但是你可以复制啊。复制记得加关注啊(迷之微笑)。 https://blog.csdn.net/quhongqiang/article/details/86642694
let arrList = [
["a","b","c"],
["a","b","d"],
["a","c","d"],
["x","y","z"],
];
转变成:
let arrList = [ ["a","b","c"],
["a","b","d"],
["a","c","d"],
["x","y","z"]
];
let obj = {
name: "a",
children: [ {
name: "b",
children: [ {
name: "c",
children:[]
},
{
name: "d",
children:[]
}
]
},
{
name:"c",
children:[ {
name:"c",
children:[ {
name:"d"
}
]
}
]
}
]
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
let arrList = [
["a","b","c"],
["a","b","d"],
["a","c","d"],
["x","y","z"],
];
let newArr = [
arrList[0],
arrList[1],
arrList[2],
]
function translate (arr) {
return func(JSON.parse(JSON.stringify(arr)))
}
function func (arr) {
return Object.values(arr.reduce((accumulator, currentValue) => {
let name = currentValue.shift()
let item = accumulator[name] = accumulator[name] || (currentValue.length ? {
name,
children: []
} : {name})
item.children && item.children.push(currentValue)
return accumulator
}, {})).map(item => item.children ? {
...item,
children: func(item.children)
} : item)
}
console.log('obj:', JSON.stringify(translate(newArr), null, 2))
</script>
</html>
得益于:茹总。感谢!留待有用