js樹結構轉化為一維數組


原有的樹結構

const jsdata = [
      {
        category: 1,
        name: '第一部分 常識判斷',
        qcount: 10,
        judgeFlag: 0,
        description: '常識判斷開始',
        children: [
          {
            category: 6,
            name: '1.1 部分名稱',
            qcount: 10,
            judgeFlag: 0,
            description: null,
            children: [
              { category: 7, name: '1.1.1 部分名稱', qcount: 5, judgeFlag: 0, description: null, children: null, level: 0 },
              { category: 8, name: '1.1.2 部分名稱', qcount: 5, judgeFlag: 0, description: '1.1.2頭部說明', children: null, level: 0 },
            ],
            level: 0,
          },
        ],
        level: 0,
      },
      { category: 2, name: '第二部分 言語理解與表達', qcount: 5, judgeFlag: 0, description: null, children: null, level: 0 },
      {
        category: 3,
        name: '第三部分 數量關系',
        qcount: 10,
        judgeFlag: 0,
        description: null,
        children: [
          {
            category: 9,
            name: '3.1 部分名稱',
            qcount: 5,
            judgeFlag: 0,
            description: '3.1頭部說明',
            children: [{ category: 11, name: '3.1.1 部分名稱', qcount: 5, judgeFlag: 1, description: null, children: null, level: 0 }],
            level: 0,
          },
          {
            category: 10, name: '3.2 部分名稱', qcount: 5, judgeFlag: 0, description: null,
            children: [
              { category: 7, name: '1.1.1 部分名稱', qcount: 5, judgeFlag: 0, description: null, children: null, level: 0 },
              { category: 8, name: '1.1.2 部分名稱', qcount: 5, judgeFlag: 0, description: '1.1.2頭部說明', children: null, level: 0 },
            ],
            level: 0
          },
        ],
        level: 0,
      },
      { category: 4, name: '第四部分 判斷推理', qcount: 0, judgeFlag: 0, description: null, children: null, level: 0 },
      { category: 5, name: '第五部分 資料分析', qcount: 0, judgeFlag: 0, description: null, children: null, level: 0 },
      { category: 12, name: '六、 部分名稱', qcount: 0, judgeFlag: 0, description: null, children: null, level: 0 },
      { category: 13, name: '七、 部分名稱', qcount: 0, judgeFlag: 0, description: null, children: null, level: 0 },
    ]

轉換后的結構

    function combineModulePages(moduleTrees) {
      let pageList = [];
      let stack = [];
      const fun = (arr, level = 1) => {
        for (let i = 0; i < arr.length; i++) {
          const item = arr[i];
          if (item.children && item.children.length > 0) {
            stack.push({
              name: item.name,
              qcount: item.qcount,
              category: item.category,
              level,
            })
            fun(item.children, level + 1)
          } else {
            pageList.push({
              qcount: item.qcount,
              modules: stack.concat({
                name: item.name,
                qcount: item.qcount,
                category: item.category,
                level,
              }),
              level: level
            })
            stack = []
          }
        }
        return pageList
      }
      return fun(moduleTrees)
    }

    console.log(combineModulePages(jsdata))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM