我有以下未經排序的檔案結構:
我有以下未經排序的檔案結構:
const files: 檔案[] = [
{info: {name: "Part 3"}。
contents:
[
{info: {name: "05 Chapter"}, contents: [], isHidden: false}。
{info: {name: "10章"}, contents: [], isHidden: false}。
{info: {name: "03 Annex"}, contents: [], isHidden: false}。
],
isHidden: false}, isHidden.
},
{info: {name: "Part 1"}。
contents:
[
{info: {name: "05 Chapter"}, contents: [], isHidden: false}。
{info: {name: "10 Annex"}, contents: [], isHidden: false}。
{info: {name: "03 Chapter"}, contents: [], isHidden: false}。
],
isHidden: false}, isHidden.
我想根據另一個輸入物件(這是一個簡單的書簽結構物件)對這個未排序的檔案樹物件按files.info.name進行排序,這個物件看起來像這樣:
const bookmark = [
{
part: "第一部分"。
chapters:
[
{
name: "03 Annex"。
chapters: []
},
{
name: "05章"。
chapters: []
},
{
name: "10章"。
chapters:
}
]
},
{
part: "第三部分"。
chapters:
[
{
name: "03章"。
chapters: []
},
{
name: "05章"。
chapters: []
},
{
name: "10 Annex",
chapters: []
}
]
}
]
到目前為止,我有以下內容,但我不認為這可以通過每個級別。
// sortFilesByBookmark按給定的書簽物件排序顯示檔案。
匯出 功能 sortFilesByBookmark(files: File[] , bookmark){
files.sort(function(a, b) {
return bookmark.indexOf(a.info.name) - bookmarkArray.indexOf(b.info.name) 。
});
}
uj5u.com熱心網友回復:
使用一個遞回函式
interface XFile {
info: { name: string };
isHidden: boolean;
contents: XFile[];
}
介面 Bookmark {
//你應該考慮將`part` & `name`命名為一樣的。
part?: string;
name?: 字串。
chapters: Bookmark[]。
}
export function sortFilesByBookmark(files: XFile[], bookmarks: Bookmark) 。XFile[] {
//將檔案作為書簽排序。
const sorted = files.sort((a, b) => /span> {
return bookmarks.findIndex(x => a. info.name === (x.part| x.name)
- bookmarks.findIndex(x => b。 info.name === (x.part || x.name))。)
})
// Nest sort
sorted.forEach((f, ix) =>/span> {
const bk = bookmarks.find(x => f. info.name === (x.part || x.name) 。)
f.contents = sortFilesByBookmark(f.contents, bk.chapters) 。
})
return sorted;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/328359.html
標籤:
