[英]transform file/directory structure into 'tree' in vue json, how can add new field to new json type?
transform file/directory structure into 'tree' in vue json将文件/目录结构转换为 vue json 中的“树”
I have an array of objects that looks like this:我有一个看起来像这样的对象数组:
[
{
"name": "Officer",
"fid": "123",
"isDirectory": true,
"path": "Officer/EventReport/SelfReport/110-04-02/RCBS.pdf"
},
{
"name": "Officer",
"fid": "456",
"isDirectory": true,
"path": "Officer/EventReport/SelfReport/110-04-10/1100_b.pdf"
},
{
"name": "Officer",
"fid": "875",
"isDirectory": true,
"path": "Officer/S_Meeting/W_Meeting/110-5/Officer_from.docx"
},
{
"name": "Officer",
"fid": "851",
"isDirectory": true,
"path": "Officer/S_Meeting/W_Meeting/110-5/16200.jpg"
},
{
"name": "Officer",
"fid": "510",
"isDirectory": true,
"path": "Officer/S_Meeting/W_Meeting/110-5/2021-05-18_2342.png"
}
]
There could be any number of arbitrary path's, this is the result of iterating through files and folders within a directory.可能有任意数量的任意路径,这是遍历目录中的文件和文件夹的结果。
What I'm trying to do is determine the 'root' node of these.我想要做的是确定这些的“根”节点。 Ultimately, this will be stored in mongodb and use materialized path to determine it's relationships.
最终,这将存储在 mongodb 中并使用物化路径来确定它的关系。
I hope I can show this one.我希望我能展示这个。
[
{
"name": "Officer",
"isDirectory": true,
"items": [
{
"name": "EventReport",
"isDirectory": true,
"items": [
{
"name": "SelfReport",
"isDirectory": true,
"items": [
{
"name": "2020-110-04-02",
"isDirectory": true,
"items": [
{
"name": "RCBS.pdf",
"fid": "123",
"isDirectory": false
}
]
},
{
"name": "2020-110-04-10",
"isDirectory": true,
"items": [
{
"name": "1100_b.pdf",
"fid": "456",
"isDirectory": false
}
]
}
]
}
]
},
{
"name": "SecurityMeeting",
"isDirectory": true,
"items": [
{
"name": "SecurityWorkMeeting",
"isDirectory": true,
"items": [
{
"name": "2021-05-SecurityWorkMeeting",
"isDirectory": true,
"items": [
{
"name": "Officer_Report.docx",
"fid": "875",
"isDirectory": false
},
{
"name": "16200.jpg",
"fid": "851",
"isDirectory": false
},
{
"name": "2021-05-18_2342.png",
"fid": "510",
"isDirectory": false
}
]
},
]
}
]
}
]
},
]
this is my code, but I don't know how can add fid field, I tried more methods, but it all cannot working.这是我的代码,但我不知道如何添加 fid 字段,我尝试了更多方法,但都无法正常工作。
let arr = xhr.data.result[0].UploadFile;
var tree = {};
arr.forEach((item) => {
//debugger;
let tokens = item.path.replace(/^\/|\/$/g, "").split("/");
let current = tree;
for (let i = 0; i < tokens.length; i++) {
if (!current[tokens[i]]) {
current[tokens[i]] = {};
}
current = current[tokens[i]];
}
});
const parseNode = function (node) {
return Object.keys(node).map((key) => {
//debugger;
if (Object.keys(node[key]).length === 0) {
return {
isDirectory: false,
name: key,
};
}
return {
isDirectory: true,
name: key,
items: parseNode(node[key]),
};
});
};
objectProvider._data[0].items = parseNode(tree);
modify like this像这样修改
let arr = xhr.data.result[0].UploadFile;
var tree = {};
arr.forEach((item) => {
//debugger;
let tokens = item.path.replace(/^\/|\/$/g, "").split("/");
let current = tree;
for (let i = 0; i < tokens.length; i++) {
if (!current[tokens[i]]) {
current[tokens[i]] = {fid: item.fid};
}
current = current[tokens[i]];
}
});
const parseNode = function (node) {
return Object.keys(node).map((key) => {
const { fid } = node[key];
delete node[key].fid;
if (Object.keys(node[key]).length === 0) {
return {
isDirectory: false,
name: key,
fid,
};
}
return {
isDirectory: true,
name: key,
fid,
items: parseNode(node[key]),
};
});
};
objectProvider._data[0].items = parseNode(tree);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.