递归展开tree to list

treeToList

  const treeToList = (list, config = { children: 'children' }) => {
      const rows = []
      const deepFN = (
          list = [],
          parent = null,
          config = { children: 'children' }
      ) => {
          list.forEach(item => {
              const row = assign({}, parent, item)
              row[config.children] = item[config.children]
              if (row.rows) {
                  deepFN(row.rows, row, config)
              } else {
                  rows.push(row)
              }
          })
      }
      deepFN(list, {}, config)
      return rows
  }

调用示例:

treeList数据源

const treeList = [{
          "id": null,
          "psName": "一般四川",
          "psId": "ff80808179f39a9f0179f475390d2416",
          "rows": [{
              "facilitiesId": "2e85ebab-1b33-4405-bb84-66188b20037e",
              "facilitiesName": "总表123132131",
              "type": "2",
              "rows": [{
                  "equipId": "2e85ebab-1b33-4405-bb84-66188b20037e",
                  "equipName": "总表123132131",
                  "dataTime": "2021-08-19 15:30:00",
                  "status": "311.50",
                  "ia": "187.07",
                  "ib": "767.20",
                  "ic": "711.89",
                  "ua": "263.33",
                  "ub": "499.94",
                  "uc": "514.41",
                  "pt": "994.75"
              }]
          }]
      },
      {
          "id": null,
          "psName": "一般工业企业zhuz",
          "psId": "4028864d7aa3e75c017aa3f3e9b10060",
          "rows": [{
                  "facilitiesId": "618838dc-de1d-4e26-a9e8-ff53c94631ef",
                  "facilitiesName": "总表-zhuz",
                  "type": "2",
                  "rows": [{
                      "equipId": "618838dc-de1d-4e26-a9e8-ff53c94631ef",
                      "equipName": "总表-zhuz",
                      "dataTime": "2021-08-19 15:30:00",
                      "status": "309.45",
                      "ia": "913.84",
                      "ib": "643.25",
                      "ic": "12.95",
                      "ua": "551.36",
                      "ub": "399.54",
                      "uc": "491.13",
                      "pt": "626.81"
                  }]
              },
              {
                  "facilitiesId": "7d69e3a7-915a-4951-bf16-d9ec7cc825b6",
                  "facilitiesName": "生产单元1-1",
                  "type": "4",
                  "rows": [{
                          "equipId": "11",
                          "equipName": "生产设备1-1-1",
                          "dataTime": "2021-08-19 15:30:00",
                          "status": "739.18",
                          "ia": "192.61",
                          "ib": "4.52",
                          "ic": "142.54",
                          "ua": "161.79",
                          "ub": "247.99",
                          "uc": "968.02",
                          "pt": "357.15"
                      },
                      {
                          "equipId": "123456",
                          "equipName": "生产设备1-1-2",
                          "dataTime": "2021-08-19 15:30:00",
                          "status": "136.71",
                          "ia": "612.46",
                          "ib": "423.48",
                          "ic": "983.70",
                          "ua": "859.77",
                          "ub": "751.66",
                          "uc": "170.12",
                          "pt": "985.59"
                      }
                  ]
              },
              {
                  "facilitiesId": "fb735f3f-d416-44fc-b6d4-845935cbdb3a",
                  "facilitiesName": "生产单元1-2",
                  "type": "4",
                  "rows": [{
                          "equipId": "sbbh",
                          "equipName": "生产设备1-2-1",
                          "dataTime": "2021-08-19 15:30:00",
                          "status": "541.02",
                          "ia": "785.23",
                          "ib": "395.71",
                          "ic": "973.27",
                          "ua": "775.45",
                          "ub": "382.14",
                          "uc": "851.93",
                          "pt": "544.34"
                      },
                      {
                          "equipId": "13",
                          "equipName": "生产设备1-2-2",
                          "dataTime": "2021-08-19 15:30:00",
                          "status": "496.09",
                          "ia": "706.66",
                          "ib": "933.91",
                          "ic": "733.84",
                          "ua": "97.43",
                          "ub": "948.65",
                          "uc": "109.63",
                          "pt": "337.37"
                      }
                  ]
              },
              {
                  "facilitiesId": "4464b2b7-2789-4142-b8c6-69b41986a4cc",
                  "facilitiesName": "治污单元1-1",
                  "type": "5",
                  "rows": [{
                          "equipId": "123",
                          "equipName": "治污设备1-1-1",
                          "dataTime": "2021-08-19 15:30:00",
                          "status": "509.78",
                          "ia": "752.77",
                          "ib": "907.71",
                          "ic": "139.81",
                          "ua": "907.26",
                          "ub": "851.40",
                          "uc": "541.61",
                          "pt": "744.32"
                      },
                      {
                          "equipId": "1",
                          "equipName": "治污设备1-1-2",
                          "dataTime": "2021-08-19 15:30:00",
                          "status": "689.61",
                          "ia": "849.01",
                          "ib": "99.13",
                          "ic": "989.69",
                          "ua": "228.53",
                          "ub": "149.45",
                          "uc": "577.85",
                          "pt": "193.52"
                      }
                  ]
              },
              {
                  "facilitiesId": "33a0f6f0-344a-4fc0-b411-b3195134eb75",
                  "facilitiesName": "治污单元1-2",
                  "type": "5",
                  "rows": [{
                      "equipId": "1",
                      "equipName": "治污设备1-2-1",
                      "dataTime": "2021-08-19 15:30:00",
                      "status": "768.37",
                      "ia": "442.06",
                      "ib": "238.32",
                      "ic": "991.40",
                      "ua": "204.05",
                      "ub": "997.58",
                      "uc": "979.16",
                      "pt": "923.71"
                  }]
              }
          ]
      },
      {
          "id": null,
          "psName": "污水处理厂四川qmj111",
          "psId": "ff80808179bbd52b0179c142f18c0027",
          "rows": [{
              "facilitiesId": "f488f117-faf8-4de8-8da0-549c06685c41",
              "facilitiesName": "总表2",
              "type": "2",
              "rows": [{
                  "equipId": "f488f117-faf8-4de8-8da0-549c06685c41",
                  "equipName": "总表2",
                  "dataTime": "2021-08-19 15:30:00",
                  "status": "516.28",
                  "ia": "770.48",
                  "ib": "818.74",
                  "ic": "810.51",
                  "ua": "646.58",
                  "ub": "524.43",
                  "uc": "774.96",
                  "pt": "37.65"
              }]
          }]
      },
      {
          "id": null,
          "psName": "一般工业企业qmj111",
          "psId": "ff80808179b101750179b103fe3d0000",
          "rows": [{
                  "facilitiesId": "b4e0bbe1-d0f5-41f1-9c7f-ebe6e2d3b020",
                  "facilitiesName": "总表1",
                  "type": "2",
                  "rows": [{
                      "equipId": "b4e0bbe1-d0f5-41f1-9c7f-ebe6e2d3b020",
                      "equipName": "总表1",
                      "dataTime": "2021-08-19 15:30:00",
                      "status": "551.30",
                      "ia": "508.92",
                      "ib": "152.01",
                      "ic": "305.16",
                      "ua": "71.44",
                      "ub": "838.30",
                      "uc": "991.10",
                      "pt": "914.76"
                  }]
              },
              {
                  "facilitiesId": "71498f37-d8c1-44f7-9f37-3c8438d66308",
                  "facilitiesName": "生产单元111",
                  "type": "4",
                  "rows": [{
                          "equipId": "1",
                          "equipName": "省1-1",
                          "dataTime": "2021-08-19 15:30:00",
                          "status": "199.24",
                          "ia": "820.94",
                          "ib": "36.55",
                          "ic": "656.12",
                          "ua": "734.25",
                          "ub": "771.17",
                          "uc": "114.49",
                          "pt": "733.03"
                      },
                      {
                          "equipId": "1",
                          "equipName": "1-2",
                          "dataTime": "2021-08-19 15:30:00",
                          "status": "329.72",
                          "ia": "311.53",
                          "ib": "411.83",
                          "ic": "29.63",
                          "ua": "401.07",
                          "ub": "767.12",
                          "uc": "889.09",
                          "pt": "911.78"
                      }
                  ]
              },
              {
                  "facilitiesId": "9c02a8a4-e591-468e-9cd1-a7585d67b485",
                  "facilitiesName": "治污1-1",
                  "type": "5",
                  "rows": [{
                          "equipId": "33",
                          "equipName": "治污2-2",
                          "dataTime": "2021-08-19 15:30:00",
                          "status": "820.36",
                          "ia": "478.54",
                          "ib": "609.68",
                          "ic": "684.54",
                          "ua": "267.05",
                          "ub": "92.03",
                          "uc": "357.95",
                          "pt": "908.41"
                      },
                      {
                          "equipId": "11",
                          "equipName": "治污2-3",
                          "dataTime": "2021-08-19 15:30:00",
                          "status": "164.01",
                          "ia": "644.76",
                          "ib": "315.29",
                          "ic": "579.89",
                          "ua": "149.74",
                          "ub": "278.99",
                          "uc": "595.11",
                          "pt": "278.96"
                      },
                      {
                          "equipId": "1",
                          "equipName": "治污2-1",
                          "dataTime": "2021-08-19 15:30:00",
                          "status": "168.42",
                          "ia": "243.84",
                          "ib": "890.68",
                          "ic": "611.10",
                          "ua": "779.81",
                          "ub": "9.37",
                          "uc": "380.56",
                          "pt": "166.82"
                      }
                  ]
              }
          ]
      },
      {
          "id": null,
          "psName": "一般工业企业cc",
          "psId": "ff80808179f39a9f0179f3c52c2a0001",
          "rows": [{
              "facilitiesId": "15478af0-3e2f-475f-94e0-9f72d510d57b",
              "facilitiesName": "111",
              "type": "2",
              "rows": [{
                  "equipId": "15478af0-3e2f-475f-94e0-9f72d510d57b",
                  "equipName": "111",
                  "dataTime": "2021-08-19 15:30:00",
                  "status": "994.76",
                  "ia": "347.23",
                  "ib": "34.32",
                  "ic": "444.85",
                  "ua": "801.15",
                  "ub": "798.72",
                  "uc": "825.08",
                  "pt": "144.36"
              }]
          }]
      }
  ]
View Code
// 调用示例
  const rows = treeToList(treeList, { children: 'rows' })

如果这篇文章对您有帮助,您可以打赏我

技术交流QQ群:15129679

原文地址:https://www.cnblogs.com/yeminglong/p/15162237.html