Javascript 如何将一个数据集递归转换为另一个数据集?
给出了以下数据,这些数据是我从api获得的,并且偶尔会被修改Javascript 如何将一个数据集递归转换为另一个数据集?,javascript,Javascript,给出了以下数据,这些数据是我从api获得的,并且偶尔会被修改 const data = [ { name: "BG", latest: false, dir: true, etag: null, objectName: "BG", size: 0, lastModified: null, storageClass: null, versionId: null, childI
const data = [
{
name: "BG",
latest: false,
dir: true,
etag: null,
objectName: "BG",
size: 0,
lastModified: null,
storageClass: null,
versionId: null,
childItems: [
{
etag: '"13dda89d102a62beb58c57a9477b252c"',
objectName: "BG/item.xml",
size: 12763,
lastModified: "2020-11-17T13:13:34.735Z",
storageClass: "STANDARD",
versionId: null,
childItems: null,
name: "item.xml",
latest: false,
dir: false,
},
{
etag: '"5baf1d6bcccc266bfc76cbe36724bd99"',
objectName: "BG/item.xml",
size: 17856,
lastModified: "2020-11-17T13:13:25.796Z",
storageClass: "STANDARD",
versionId: null,
childItems: null,
name: "item.xml",
latest: false,
dir: false,
},
],
},
{
name: "OTHER",
latest: false,
dir: true,
etag: null,
objectName: "OTHER",
size: 0,
lastModified: null,
storageClass: null,
versionId: null,
childItems: [
{
etag: '"ab37611f0b217b71804da19d9111bddd"',
objectName: "OTHER/item.xml",
size: 3953,
lastModified: "2020-11-18T09:12:25.634Z",
storageClass: "STANDARD",
versionId: null,
childItems: null,
name: "item.xml",
latest: false,
dir: false,
},
{
name: "MORE",
latest: false,
dir: true,
etag: null,
objectName: "OTHER/MORE/",
size: 0,
lastModified: null,
storageClass: null,
versionId: null,
childItems: [
{
etag: '"aea98cd3b3aea692475c329d79c9e7aa"',
objectName: "OTHER/MORE/item.backup",
size: 573934,
lastModified: "2020-11-18T09:45:08.986Z",
storageClass: "STANDARD",
versionId: null,
childItems: null,
name: "item.backup",
latest: false,
dir: false,
},
{
etag: '"1a36b1f644f71a2f62f9c347da5fc381"',
objectName: "OTHER/MORE/data.txt",
size: 1045,
lastModified: "2020-11-18T09:45:08.622Z",
storageClass: "STANDARD",
versionId: null,
childItems: null,
name: "data.txt",
latest: false,
dir: false,
},
],
},
],
},
];
我需要将其转换为以下内容
[
{
label: "BG",
children: [
{
label: "item.xml",
data: "BG/item.xml",
},
{
label: "item.xml",
data: "BG/item.xml",
},
],
},
{
label: "OTHER",
children: [
{
label: "item.xml",
data: "OTHER/item.xml",
},
{
label: "MORE",
children: [
{
label: "item.backup",
data: "OTHER/MORE/item.backup",
},
{
label: "data.txt",
data: "OTHER/MORE/data.txt",
},
],
},
],
},
];
标准是当对象的dir
属性为true时,获取name
并将其分配给childItem
属性中的子对象的label
属性,获取name
和objectName
属性的值
这对我来说是一项很难推理的任务,我提前感谢您的帮助迭代数据项。对于每个项目,获取标签并选中
dir
;如果true
,则递归处理子级,否则获取数据
constprocessitems=items=>items.map(item=>{
常数结果={
标签:item.name,
};
如果(项目目录){
results.children=processItems(item.childItems);
}
否则{
results.data=item.objectName;
}
返回结果;
};
const results=processItems(数据);
谢谢您的回答。我更正了代码中的详细信息,但现在我想我得到了预期的结果