編輯:我相信我在試圖洗掉重復的內容時走錯了路,而需要清除陣列的內容。
這里是示例代碼。我正試圖找到在每次迭代前清除 parent.subdirectories 陣列的最佳位置。
const mainArray = [{Id:1, Name: "test",SubDirectoryCount:10,Files:[]}】。]
const directories = [{Id:56, Name: "Client 2",SubDirectoryCount: 1,ParentId:1, Files: []},{Id:53, Name: "Client 3",SubDirectoryCount:1, ParentId: 1,Files:[]}, {Id: 50,Name:"Client 4", SubDirectoryCount: 1,ParentId:1, Files: []},{Id:48, Name: "Client 5",SubDirectoryCount:1, ParentId: 53,Files:[]}, {Id: 47,Name:"Client 5", SubDirectoryCount: 1,ParentId:53, Files: []},{Id:49, Name: "Client 5",SubDirectoryCount: 1,ParentId:53,Files:[]}】。]
//創建平面串列。
const tmp = mainArray.concat(directories)。
tmp.forEach(directory => {
const parent = tmp.find(item =>/span> item. Id === directory.ParentId)。)
if(parent) {
parent.SubDirectories = parent.SubDirectories || [] 。
parent.SubDirectories.push(目錄)。
}
});
console.log(mainArray)
我的嘗試,但是,它在重建JSON之前洗掉了頂部專案。
tmp.forEach((directory) => //span> {
const parent = tmp.find((item) =>/span> item。 Id === directory.ParentFk)。)
if (father) {
parent.SubDirectories = parent.SubDirectories || [] 。
const found = parent.SubDirectories. some((el) => el.Id == directory.Id) 。
if (! found) {
parent.SubDirectories.push(directory)。
} else {
parent.SubDirectories = [] 。
}
}
}, []);
uj5u.com熱心網友回復:
簡單地說,就是?
。const directories =
[{ Id: 56, Name: 'Client 2', SubDirectoryCount: 1, ParentId: 1, Files: [] }
, { Id: 53, Name: 'Client 3', SubDirectoryCount: 1, ParentId: 1, Files: [] }
, { Id: 50, Name: 'Client 4', SubDirectoryCount: 1, ParentId: 1, Files: [] }
, { Id: 48, Name: 'Client 5', SubDirectoryCount: 1, ParentId: 53, Files: [] }
, { Id: 47, Name: 'Client 5', SubDirectoryCount: 1, ParentId: 53, Files: [] }
, { Id: 47, Name: 'Client 5', SubDirectoryCount: 1, ParentId: 53, Files: [] }
]
for (let index= directories.length; --index;)
{
if (index > directories.findIndex(x=>/span>x. Id====directories[index].Id)
directories.splice(index,1)
}
console.log( directories )
.as-console-wrapper {max-height。100%!important;top:0 }
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
你可以做到:
const directories = [{Id: 56, Name: 'Client 2', SubDirectoryCount: 1, ParentId: 1, Files: []}, {Id: 53, Name: 'Client 3', SubDirectoryCount: 1, ParentId: 1, Files: []}, {Id: 50, Name: 'Client 4', SubDirectoryCount: 1, ParentId: 1, Files: []}, {Id: 48, Name: 'Client 5', SubDirectoryCount: 1, ParentId: 53, Files: []}, {Id: 47, Name: 'Client 5', SubDirectoryCount: 1, ParentId: 53, Files: []}, {Id: 47, Name: 'Client 5', SubDirectoryCount: 1, ParentId: 53, Files: []}]
const result = Object.values(directories。 reduce((a, c) =>(a[c. Id] = a[c.Id] || c, a), {})
console.log(result)
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/334252.html
標籤:
