![](/img/trans.png)
[英]How to increment and add the new ID to a new node in a Json array tree structure using Nodejs
[英]transform file/directory structure into 'tree' in vue json, how can add new field to new json type?
將文件/目錄結構轉換為 vue json 中的“樹”
我有一個看起來像這樣的對象數組:
[
{
"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"
}
]
可能有任意數量的任意路徑,這是遍歷目錄中的文件和文件夾的結果。
我想要做的是確定這些的“根”節點。 最終,這將存儲在 mongodb 中並使用物化路徑來確定它的關系。
我希望我能展示這個。
[
{
"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
}
]
},
]
}
]
}
]
},
]
這是我的代碼,但我不知道如何添加 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);
像這樣修改
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.