脑壳痛,我脑细胞快死光了啊
求
我实在写不下去了,把
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>