Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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 处理具有可变结构的对象数组_Javascript - Fatal编程技术网

Javascript 处理具有可变结构的对象数组

Javascript 处理具有可变结构的对象数组,javascript,Javascript,我有一个定义文件和目录结构的对象数组。这将根据实际情况而有所不同,而实际情况可能更为复杂 以下是一个例子: 例如,此根文件夹包含“文件夹id”:“F1”和“文件夹id”:“F2”,它将继续分割 const文件夹=[ { 文件夹id:“F1”, 名称:“测试文件夹1”, 档案:[ { 文件id:“文件1”, 名称:“白板2020年6月3日下午4:56” } ], 文件夹:[ { 文件夹id:“Folder1”, 名称:“子文件夹”, 档案:[ { 文件id:“文件1-1”, 名称:“新建Micr

我有一个定义文件和目录结构的对象数组。这将根据实际情况而有所不同,而实际情况可能更为复杂

以下是一个例子:

例如,此根文件夹包含“文件夹id”:“F1”和“文件夹id”:“F2”,它将继续分割

const文件夹=[
{
文件夹id:“F1”,
名称:“测试文件夹1”,
档案:[
{
文件id:“文件1”,
名称:“白板2020年6月3日下午4:56”
}
],
文件夹:[
{
文件夹id:“Folder1”,
名称:“子文件夹”,
档案:[
{
文件id:“文件1-1”,
名称:“新建Microsoft Word文档.docx”
}
],
文件夹:[
{
文件夹id:“Folder1-1”,
名称:“文件夹等级2”,
档案:[
{
文件id:“文件1-1-1”,
名称:“3级文件夹中的测试文件”
}
],
文件夹:[
{
文件夹id:“Folder1-1-1”,
名称:“文件夹等级3”,
文件:[],
文件夹:[]
}
]
}
]
}
]
},
{
文件夹id:“F2”,
名称:“测试文件夹2”,
档案:[
{
文件id:“文件2”,
名称:“buildcode.png”
}
],
文件夹:[
{
文件夹id:“Folder2”,
名称:“子文件夹1”,
档案:[
{
文件id:“文件2-1”,
名称:“repo.png”
}
],
文件夹:[]
}
]
}

];不知道这是否真的适用于您,但请在您查找时输出

let数据={
文件夹:[
{
文件夹id:“F1”,
名称:“测试文件夹1”,
档案:[
{
文件id:“文件1”,
名称:“白板2020年6月3日下午4:56”,
},
],
文件夹:[
{
文件夹id:“Folder1”,
名称:“子文件夹”,
档案:[
{
文件id:“文件1-1”,
名称:“新建Microsoft Word文档.docx”,
},
],
文件夹:[
{
文件夹id:“Folder1-1”,
名称:“文件夹等级2”,
档案:[
{
文件id:“文件1-1-1”,
名称:“3级文件夹中的测试文件”,
},
],
文件夹:[
{
文件夹id:“Folder1-1-1”,
名称:“文件夹等级3”,
文件:[],
文件夹:[],
},
],
},
],
},
],
},
{
文件夹id:“F2”,
名称:“测试文件夹2”,
档案:[
{
文件id:“文件2”,
名称:“buildcode.png”,
},
],
文件夹:[
{
文件夹id:“Folder2”,
名称:“子文件夹1”,
档案:[
{
文件id:“文件2-1”,
名称:“repo.png”,
},
],
文件夹:[],
},
],
},
],
};
常量映射器=(文件夹,父ID)=>{
设obj={};
如果(文件夹长度){
文件夹。forEach((f)=>{
如果(f.folders){
设_c={
[f.文件夹\u id]:{
childrenIds:f.files.map((\u f)=>\u f.file\u id),
…(parentId&&{parentId}),
id:f.folder_id,
},
};
让_files=f.files.map((_f)=>{
返回{
[\u f.file\u id]:{…(parentId&&{parentId}),id:\u f.file\u id},
};
});
obj={…obj,…_文件[“0”],…_c,…映射器(f.folders,f.folder_id)};
}
});
}
返回obj;
};

log(mapper(data.folders))尝试使用递归。谢谢@MUHAMMAD ILYAS,但输出似乎不正确。外键不匹配吗?噢!您是对的,文件密钥没有像其他密钥一样映射。@123456应答已更新,现在您可以根据需要进行操作