我有資料。在此資料中還有其他具有子項的相同型別的資料。我想根據它們的“id”欄位對它們進行排序,但我無法為其設定演算法方案。
我試過的:
const sortedData: [] = [];
function sortAscending(datas: Group[]) {
sortedData.push(datas.sort((group1, group2) => group1.id - group2.id ));
return sortedData;
}
使用此代碼,我只能在沒有孩子的情況下進行排序。
我試圖對我想描述的圖片進行建模:

注意:回傳的資料將被映射并稍后使用。
樣本陣列:
0:
children: [{…}]
id: 1
name: "name1"
[[Prototype]]: Object
1:
children: []
id: 7
name: "name2"
[[Prototype]]: Object
'children' 欄位也有 'children'、'id' 和 'name' 欄位,就像他們自己一樣。我想要的是根據他們的“id”欄位對資料本身和其中的子欄位中的資料進行排序。
uj5u.com熱心網友回復:
首先,您需要知道陣列sort方法對陣列進行排序,in-place這意味著它會更改您傳遞給它的陣列。所以
const rawData= [...] // your raw, un-sorted data
function sortAscending(data){...} // your function that does sorting
sortAscending(rawData) // after this, your array gets sorted 'in-place'
其次,如果您的資料有子級,而這些子級有自己的子級,并且您希望它們都按升序排列,則需要撰寫一些recursive演算法。例如:
function sortAscending(data){
data.sort((group1, group2) => group1.id - group2.id));
for(group of data){
if (group.children.length) sortAscending(group.children);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/383564.html
標籤:javascript
