Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用节点js将字符串路径转换为JSON父子树?_Javascript_Node.js_Json_Ecmascript 6_Treeview - Fatal编程技术网

Javascript 如何使用节点js将字符串路径转换为JSON父子树?

Javascript 如何使用节点js将字符串路径转换为JSON父子树?,javascript,node.js,json,ecmascript-6,treeview,Javascript,Node.js,Json,Ecmascript 6,Treeview,我一直在尝试使用节点js将路径数组转换为JSON父子树。我正在跟随@Nenad Vracar建造这棵树的答案。我使用的是我稍微修改过的上述答案。下面是我的代码: function buildTree(obj) { let result = []; let level = { result }; obj.forEach(item => { if (typeof item.fsLocation != "undefined") {

我一直在尝试使用
节点js
将路径数组转换为
JSON
父子树。我正在跟随@Nenad Vracar建造这棵树的答案。我使用的是我稍微修改过的上述答案。下面是我的代码:

function buildTree(obj) {
  let result = [];
  let level = {
    result
  };

  obj.forEach(item => {
    if (typeof item.fsLocation != "undefined") {
      var obj = {}
      var path = ""
      item.fsLocation.split('/').reduce((r, name, i, a) => {
        path += "/"+name

        if (!r[name]) {
          r[name] = {
            result:[]
          };
          obj = {
            name,
            children: r[name].result
          }
          if(r[name].result.length < 1){
            obj["path"] = item.fsLocation
            obj["fileSize"] = item.fileSize
            obj["createDate"] = item.createDate
            obj["editDate"] = item.editDate
            obj["fileType"] = item.fileType
            obj["version"] = item.version
          }
          r.result.push(obj)
        }
        return r[name];
      }, level)
    }
  })
  return result
}
使用上述代码,我的输出如下:

[
   {
      "name":"Events",
      "children":[
         {
            "name":"Plays",
            "children":[
               {
                  "name":"Technologies",
                  "children":[
                     {
                        "name":"Continuity",
                        "children":[
                           {
                              "name":"technology.pptx",
                              "children":[
                                 
                              ],
                              "path":"Events/Plays/Technologies/Continuity/technology.pptx",
                              "fileSize":46845322,
                              "createDate":"2019-10-03T07:00:00Z",
                              "editDate":"2019-10-03T07:00:00Z",
                              "fileType":"pptx",
                              "version":"10.0"
                           }
                        ],
                        "path":"Events/Plays/Technologies/Continuity/technology.pptx",
                        "fileSize":46845322,
                        "createDate":"2019-10-03T07:00:00Z",
                        "editDate":"2019-10-03T07:00:00Z",
                        "fileType":"pptx",
                        "version":"10.0"
                     },
                     {
                        "name":"Technologies",
                        "children":[
                           {
                              "name":"operations.pptx",
                              "children":[
                                 
                              ],
                              "path":"Events/Plays/Technologies/operations.pptx",
                              "fileSize":23642178,
                              "createDate":"2019-01-08T08:00:00Z",
                              "editDate":"2019-01-09T08:00:00Z",
                              "fileType":"pptx",
                              "version":"15.0"
                           },
                           {
                              "name":"Solution.pdf",
                              "children":[
                                 
                              ],
                              "path":"Events/Plays/Technologies/Solution.pdf",
                              "fileSize":275138,
                              "createDate":"2016-06-16T22:42:16Z",
                              "editDate":"2016-06-16T22:42:16Z",
                              "fileType":"pdf",
                              "version":"1.0"
                           }
                        ],
                        "path":"Events/Plays/Technologies/operations.pptx",
                        "fileSize":23642178,
                        "createDate":"2019-01-08T08:00:00",
                        "editDate":"2019-01-09T08:00:00Z",
                        "fileType":"pptx",
                        "version":"15.0"
                     }
                  ]
               }
            ]
         }
      ]
   }
]
我想得到如下输出

[
   {
      "name":"Events",
      "path":"Events",
      "children":[
         {
            "name":"Plays",
            "path":"Events/Plays",
            "children":[
               {
                  "name":"Technologies",
                  "path":"Events/Plays/Technologies",
                  "children":[
                     {
                        "name":"Continuity",
                        "path":"Events/Plays/Technologies/Continuity",
                        "children":[
                           {
                              "name":"technology.pptx",
                              "children":[
                                 
                              ],
                              "path":"Events/Plays/Technologies/Continuity/technology.pptx",
                              "fileSize":46845322,
                              "createDate":"2019-10-03T07:00:00Z",
                              "editDate":"2019-10-03T07:00:00Z",
                              "fileType":"pptx",
                              "version":"10.0"
                           }
                        ]
                     },
                     {
                        "name":"Technologies",
                        "path":"Events/Plays/Technologies",
                        "children":[
                           {
                              "name":"operations.pptx",
                              "children":[
                                 
                              ],
                              "path":"Events/Plays/Technologies/operations.pptx",
                              "fileSize":23642178,
                              "createDate":"2019-01-08T08:00:00Z",
                              "editDate":"2019-01-09T08:00:00Z",
                              "fileType":"pptx",
                              "version":"15.0"
                           },
                           {
                              "name":"Solution.pdf",
                              "children":[
                                 
                              ],
                              "path":"Events/Plays/Technologies/Solution.pdf",
                              "fileSize":275138,
                              "createDate":"2016-06-16T22:42:16Z",
                              "editDate":"2016-06-16T22:42:16Z",
                              "fileType":"pdf",
                              "version":"1.0"
                           }
                        ]
                     }
                  ]
               }
            ]
         }
      ]
   }
]

你知道如何生成上述输出吗?

总是倾向于可读性而不是花哨:

const arr=[{
“文件名”:“operations.pptx”,
“文件大小”:23642178,
“文件类型”:“pptx”,
“fsLocation”:“Events/Plays/Technologies/operations.pptx”,
“创建日期”:“2019-01-08T08:00:00Z”,
“编辑日期”:“2019-01-09T08:00:00Z”,
“版本”:“15.0”
},
{
“创建日期”:“2019-10-03T07:00:00Z”,
“文件类型”:“pptx”,
“fsLocation”:“Events/Plays/Technologies/Continuity/technology.pptx”,
“文件大小”:46845322,
“文件名”:“technology.pptx”,
“编辑日期”:“2019-10-03T07:00:00Z”,
“版本”:“10.0”
},
{
“文件名”:“Solution.pdf”,
“创建日期”:“2016-06-16T22:42:16Z”,
“文件大小”:275138,
“fsLocation”:“Events/Plays/Technologies/Solution.pdf”,
“文件类型”:“pdf”,
“编辑日期”:“2016-06-16T22:42:16Z”,
“版本”:“1.0”
}
]
常数树={
名称:'根',
路径:“”,
儿童:[]
}
用于(arr常数){
让节点=树
const nodename=e.fsLocation.split(“/”)
while(nodenames.length>0){
const nodename=nodename.shift()
if(!node.children.map(e=>e.name).includes(nodename)){
node.children.push({
姓名:nodename,,
路径:[node.path,nodename].join(“/”),
儿童:[]
})
}
node=node.children.filter(e=>e.name===nodename)[0]
}
}
log(JSON.stringify(tree,null,2))
[
   {
      "name":"Events",
      "path":"Events",
      "children":[
         {
            "name":"Plays",
            "path":"Events/Plays",
            "children":[
               {
                  "name":"Technologies",
                  "path":"Events/Plays/Technologies",
                  "children":[
                     {
                        "name":"Continuity",
                        "path":"Events/Plays/Technologies/Continuity",
                        "children":[
                           {
                              "name":"technology.pptx",
                              "children":[
                                 
                              ],
                              "path":"Events/Plays/Technologies/Continuity/technology.pptx",
                              "fileSize":46845322,
                              "createDate":"2019-10-03T07:00:00Z",
                              "editDate":"2019-10-03T07:00:00Z",
                              "fileType":"pptx",
                              "version":"10.0"
                           }
                        ]
                     },
                     {
                        "name":"Technologies",
                        "path":"Events/Plays/Technologies",
                        "children":[
                           {
                              "name":"operations.pptx",
                              "children":[
                                 
                              ],
                              "path":"Events/Plays/Technologies/operations.pptx",
                              "fileSize":23642178,
                              "createDate":"2019-01-08T08:00:00Z",
                              "editDate":"2019-01-09T08:00:00Z",
                              "fileType":"pptx",
                              "version":"15.0"
                           },
                           {
                              "name":"Solution.pdf",
                              "children":[
                                 
                              ],
                              "path":"Events/Plays/Technologies/Solution.pdf",
                              "fileSize":275138,
                              "createDate":"2016-06-16T22:42:16Z",
                              "editDate":"2016-06-16T22:42:16Z",
                              "fileType":"pdf",
                              "version":"1.0"
                           }
                        ]
                     }
                  ]
               }
            ]
         }
      ]
   }
]