原有的結(jié)構(gòu) (樹形結(jié)構(gòu))

實現(xiàn)后的結(jié)構(gòu)

完整代碼

可復(fù)制代碼
<!DOCTYPE html>
<html lang="en">
<head>
? <meta charset="UTF-8">
? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? <meta http-equiv="X-UA-Compatible" content="ie=edge">
? <title>Document</title>
</head>
<body>
? <script>
? ? var data = [
? ? ? {
? ? ? ? name: "張三",
? ? ? ? age: "40",
? ? ? ? children: [
? ? ? ? ? {
? ? ? ? ? ? name: "張三的兒子",
? ? ? ? ? ? age: "20",
? ? ? ? ? ? children:[{
? ? ? ? ? ? ? name:"張三的孫子",
? ? ? ? ? ? ? age:'3',
? ? ? ? ? ? ? children:[{
? ? ? ? ? ? ? name:"張三的孫子2",
? ? ? ? ? ? ? age:'3'
? ? ? ? ? ? }]
? ? ? ? ? ? }]
? ? ? ? ? }
? ? ? ? ]
? ? ? }
? ? ];
? ? ? var arr=[]
? ? ? function getArray(data, children) {
? ? ? ? for (var i in data) {
? ? ? ? ? // 等于對象下面沒有children屬性的時候在最外面的父級追加進(jìn)去 i永遠(yuǎn)等于0
? ? ? ? ? if (data[i].children == "undefined") {
? ? ? ? ? ? // 吧父級在追加進(jìn)去
? ? ? ? ? ? arr.push(data[i])
? ? ? ? ? ? return
? ? ? ? ? } else {
? ? ? ? ? ? // 把當(dāng)前循環(huán)的這個對象當(dāng)做參數(shù)傳進(jìn)去在執(zhí)行一遍
? ? ? ? ? ? getArray(data[i].children, children);
? ? ? ? ? ? //? 刪除掉當(dāng)前的這個下的children
? ? ? ? ? ? ? delete? data[i].children
? ? ? ? ? ? ? arr.push(data[i])
? ? ? ? ? }
? ? ? ? }
? ? ? }
? ? getArray(data)
? ? // 因為是最深的一個children開吃查找的所以使用翻轉(zhuǎn)
? ? console.log(arr.reverse());
? </script>
</body>
</html>