亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

基于鍵對數組進行遞歸排序

基于鍵對數組進行遞歸排序

滄海一幻覺 2021-04-23 14:11:58
我有兩個數組。一個數組是需要排序的項目數組。另一個數組是要作為排序依據的鍵(該對象的屬性)。我想要一個功能,可以根據給定的每個鍵對數組進行排序。我試圖遍歷keys數組并從數組中彈出每個鍵,然后進行排序,但是將該鍵添加到我用來對數組進行排序的三進制中一直給我帶來了問題。export function sortOrdersByKeys<T>(ordersArr: T[], sortByKeys: string[]): T[] {    if (sortByKeys.length === 0) {        return ordersArr;    } else {        const lastItem = sortByKeys.pop();        return sortWithKey(ordersArr, lastItem);    }}function sortWithKey(arr, key) {    key = key[0];    for (let i = 0; i < key.length(); i++) {    }    return arr.sort((a, b) => (a.key > b.key) ? 1 : -1);}
查看完整描述

2 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

這里有些錯誤:

1)a.key將查找"key"該對象的屬性。你可能想要a[key]

2).length()可能不是功能

3)您的既沒有遞歸調用也沒有循環 sortOrderByKeys

4)該怎么key = key[0];辦?僅采用密鑰的第一個字符?

您的整體算法也將不起作用。

 array.sort(a).sort(b)

...將首先對數組進行排序a,然后對進行排序b。因此,它實際上產生與array.sort(b)...相同的結果。

您只需要排序一次,然后在比較兩個數組元素a和b時,再遍歷各個鍵,直到找到差異為止。


查看完整回答
反對 回復 2021-04-29
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

這是一個基于keys數組進行排序的遞歸函數。讓我知道您是否需要解釋。


function sortWithKey(arr, keys) {

    const KEY = keys.pop();

    arr = arr.sort((a, b) => (a[KEY]> b[KEY]) ? 1 : -1);


    if(keys.legth <=0){

      return arr;

    } 

    return sortWithKey(arr, keys) ;

}


查看完整回答
反對 回復 2021-04-29
  • 2 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號