脑壳痛

脑壳痛,我脑细胞快死光了啊

我实在写不下去了,把

dataObj
转化为最后的那个数据格式
<!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>
    // 模擬數據,这个是用户导入表格后,前端读取的表格格式
    const mockData =
      [{"prop0":1,"prop1":"abc","prop2":"你好","prop3":"第3列1","prop4":"第4列1","prop5":"第5列1","prop6":"第6列1","prop7":"第7列1","prop10":"每個都不一樣的列1","prop15":"Windows7"},{"prop0":2,"prop1":"abc","prop2":"天氣","prop3":"第3列2","prop4":"第4列2","prop5":"第5列2","prop6":"第6列2","prop7":"第7列2","prop10":"每個都不一樣的列2","prop15":"Windows10"},{"prop0":3,"prop1":"abc","prop2":"天氣","prop3":"第3列3","prop4":"第4列3","prop5":"第5列3","prop6":"第6列3","prop7":"第7列3","prop10":"每個都不一樣的列3","prop15":"Windows8"},{"prop0":4,"prop1":"abc","prop2":"天氣","prop3":"第3列4","prop4":"第4列4","prop5":"第5列4","prop6":"第6列4","prop7":"第7列4","prop10":"每個都不一樣的列4","prop15":"Windows7"},{"prop0":5,"prop1":"abc","prop2":"天氣","prop3":"第3列5","prop4":"第4列5","prop5":"第5列5","prop6":"第6列5","prop7":"第7列5","prop10":"每個都不一樣的列5","prop15":"Windows10"},{"prop0":6,"prop1":"abc","prop2":"天氣","prop3":"第3列6","prop4":"第4列6","prop5":"第5列6","prop6":"第6列6","prop7":"第7列6","prop10":"每個都不一樣的列6","prop15":"Windows8"},{"prop0":7,"prop1":"abc","prop2":"天氣","prop3":"第3列7","prop4":"第4列7","prop5":"第5列7","prop6":"第6列7","prop7":"第7列7","prop10":"每個都不一樣的列7","prop15":"Windows7"},{"prop0":12,"prop1":"abc","prop2":"天氣","prop3":"第3列8","prop4":"第4列8","prop5":"第5列8","prop6":"第6列8","prop7":"第7列8","prop10":"每個都不一樣的列8","prop15":"Windows10"},{"prop0":13,"prop1":"abc","prop2":"天氣","prop3":"第3列9","prop4":"第4列9","prop5":"第5列9","prop6":"第6列9","prop7":"第7列9","prop10":"每個都不一樣的列9","prop15":"Windows10"},{"prop0":14,"prop1":"abc","prop2":"天氣","prop3":"第3列10","prop4":"第4列10","prop5":"第5列10","prop6":"第6列10","prop7":"第7列10","prop10":"每個都不一樣的列10","prop15":"Windows7"},{"prop0":15,"prop1":"abc","prop2":"天氣","prop3":"第3列11","prop4":"第4列11","prop5":"第5列11","prop6":"第6列11","prop7":"第7列11","prop10":"每個都不一樣的列11","prop15":"Windows8"},{"prop0":16,"prop1":"abc","prop2":"天氣","prop3":"第3列12","prop4":"第4列12","prop5":"第5列12","prop6":"第6列12","prop7":"第7列12","prop10":"每個都不一樣的列12","prop15":"Windows10"},{"prop0":17,"prop1":"abc","prop2":"天氣","prop3":"第3列13","prop4":"第4列13","prop5":"第5列13","prop6":"第6列13","prop7":"第7列13","prop10":"每個都不一樣的列13","prop15":"Windows7"},{"prop0":18,"prop1":"abc","prop2":"你好","prop3":"第3列14","prop4":"第4列14","prop5":"第5列14","prop6":"第6列14","prop7":"第7列14","prop10":"每個都不一樣的列14","prop15":"Windows10"},{"prop0":19,"prop1":"abc","prop2":"你好","prop3":"第3列15","prop4":"第4列15","prop5":"第5列15","prop6":"第6列15","prop7":"第7列15","prop10":"每個都不一樣的列15","prop15":"Windows8"},{"prop0":20,"prop1":"abc","prop2":"你好","prop3":"第3列16","prop4":"第4列16","prop5":"第5列16","prop6":"第6列16","prop7":"第7列16","prop10":"每個都不一樣的列16","prop15":"Windows10"},{"prop0":21,"prop1":"abc","prop2":"你好","prop3":"第3列17","prop4":"第4列17","prop5":"第5列17","prop6":"第6列17","prop7":"第7列17","prop10":"每個都不一樣的列17","prop15":"Windows10"},{"prop0":22,"prop1":"abc","prop2":"你好","prop3":"第3列18","prop4":"第4列18","prop5":"第5列18","prop6":"第6列18","prop7":"第7列18","prop10":"每個都不一樣的列18","prop15":"Windows7"},{"prop0":23,"prop1":"abc","prop2":"你好","prop3":"第3列19","prop4":"第4列19","prop5":"第5列19","prop6":"第6列19","prop7":"第7列19","prop10":"每個都不一樣的列19","prop15":"Windows10"}]
    const left1 = 'prop1';// 模擬表格這個列來作為關係圖第一列
    const left2 = 'prop2';
    const left3 = 'prop15';
    const left4 = 'prop10';
    let leftArr1 = [];
    let leftArr2 = [];
    let leftArr3 = [];
    let leftArr4 = [];
    let dataObj = {}
    let strArr1 = []
    let strArr2 = []
    let strArr3 = []
    console.log(mockData)
    mockData.forEach(_ => {
      leftArr1.push(_[left1])
      leftArr2.push(_[left2])
      leftArr3.push(_[left3])
      leftArr4.push(_[left4])
      strArr1.push(_[left1] + _[left2])
      strArr2.push(_[left1] + _[left2] + _[left3])
      strArr3.push(_[left1] + _[left2] + _[left3] + _[left4])
    })
    leftArr1 = [...new Set(leftArr1)]
    leftArr2 = [...new Set(leftArr2)]
    leftArr3 = [...new Set(leftArr3)]
    leftArr4 = [...new Set(leftArr4)]
    mockData.forEach(_ => {

    })
    leftArr1.forEach(a1 => {
      dataObj[a1] = {
        name: a1,
        children: {}
      }
      leftArr2.forEach(a2 => {
        if (strArr1.indexOf(a1 + a2) > -1) {
          dataObj[a1]['children'][a2] = {
            name: a2,
            children: {}
          }
        }
        leftArr3.forEach(a3 => {
          if (strArr2.indexOf(a1 + a2 + a3) > -1) {
            dataObj[a1]['children'][a2]['children'][a3] = {
              name: a3,
              children: {}
            }
          }
          leftArr4.forEach(a4 => {
            if (strArr3.indexOf(a1 + a2 + a3 + a4) > -1) {
              dataObj[a1]['children'][a2]['children'][a3]['children'][a4] = {
                name: a4,
                children: {}
              }
            }
          })
        })
      })
    })
    console.log('leftArr1')
    console.log(leftArr1)
    console.log(leftArr2)
    console.log(leftArr3)
    console.log(leftArr4)
    console.log('2')
    console.log(dataObj)
    // 想要得到的格式
    const needData = {
      "name": "flare",
      "children": [
        {
          "name": "data",
          "children": [
            {
              "name": "converters",
              "children": [
                { "name": "Converters", "value": 721 },
                { "name": "DelimitedTextConverter", "value": 4294 }
              ]
            },
            {
              "name": "DataUtil",
              "value": 3322
          }
          ]
        },
        {
          "name": "display",
          "children": [
            { "name": "DirtySprite", "value": 8833 },
            { "name": "LineSprite", "value": 1732 },
            { "name": "RectSprite", "value": 3623 }
          ]
        },
        {
          "name": "flex",
          "children": [
            { "name": "FlareVis", "value": 4116 }
          ]
        },
        {
          "name": "query",
          "children": [
            { "name": "AggregateExpression", "value": 1616 },
            { "name": "And", "value": 1027 },
            { "name": "Arithmetic", "value": 3891 },
            { "name": "Average", "value": 891 },
            { "name": "BinaryExpression", "value": 2893 },
            { "name": "Comparison", "value": 5103 },
            { "name": "CompositeExpression", "value": 3677 },
            { "name": "Count", "value": 781 },
            { "name": "DateUtil", "value": 4141 },
            { "name": "Distinct", "value": 933 },
            { "name": "Expression", "value": 5130 },
            { "name": "ExpressionIterator", "value": 3617 },
            { "name": "Fn", "value": 3240 },
            { "name": "If", "value": 2732 },
            { "name": "IsA", "value": 2039 },
            { "name": "Literal", "value": 1214 },
            { "name": "Match", "value": 3748 },
            { "name": "Maximum", "value": 843 },
            {
              "name": "methods",
              "children": [
                { "name": "add", "value": 593 },
                { "name": "and", "value": 330 },
                { "name": "average", "value": 287 },
                { "name": "count", "value": 277 },
                { "name": "distinct", "value": 292 },
                { "name": "div", "value": 595 },
                { "name": "eq", "value": 594 },
                { "name": "fn", "value": 460 },
                { "name": "gt", "value": 603 },
                { "name": "gte", "value": 625 },
                { "name": "iff", "value": 748 },
                { "name": "isa", "value": 461 },
                { "name": "lt", "value": 597 },
                { "name": "lte", "value": 619 },
                { "name": "max", "value": 283 },
                { "name": "min", "value": 283 },
                { "name": "mod", "value": 591 },
                { "name": "mul", "value": 603 },
                { "name": "neq", "value": 599 },
                { "name": "not", "value": 386 },
                { "name": "or", "value": 323 },
                { "name": "orderby", "value": 307 },
                { "name": "range", "value": 772 },
                { "name": "select", "value": 296 },
                { "name": "stddev", "value": 363 },
                { "name": "sub", "value": 600 },
                { "name": "sum", "value": 280 },
                { "name": "update", "value": 307 },
                { "name": "variance", "value": 335 },
                { "name": "where", "value": 299 },
                { "name": "xor", "value": 354 },
                { "name": "x_x", "value": 264 }
              ]
            },
            { "name": "Minimum", "value": 843 },
            { "name": "Not", "value": 1554 },
            { "name": "Or", "value": 970 },
            { "name": "Query", "value": 13896 },
            { "name": "Range", "value": 1594 },
            { "name": "StringUtil", "value": 4130 },
            { "name": "Sum", "value": 791 },
            { "name": "Variable", "value": 1124 },
            { "name": "Variance", "value": 1876 },
            { "name": "Xor", "value": 1101 }
          ]
        },
        {
          "name": "scale",
          "children": [
            { "name": "IScaleMap", "value": 2105 },
            { "name": "LinearScale", "value": 1316 },
            { "name": "LogScale", "value": 3151 },
            { "name": "OrdinalScale", "value": 3770 },
            { "name": "QuantileScale", "value": 2435 },
            { "name": "QuantitativeScale", "value": 4839 },
            { "name": "RootScale", "value": 1756 },
            { "name": "Scale", "value": 4268 },
            { "name": "ScaleType", "value": 1821 },
            { "name": "TimeScale", "value": 5833 }
          ]
        }
      ]
    }
  console.log(needData)
  </script>
</body>

</html>

猜你喜欢

转载自www.cnblogs.com/sugartang/p/12713383.html