首页 > 解决方案 > 基于键递归排序数组

问题描述

我有两个数组。一个数组是需要排序的项目数组。另一个数组是要排序的键(该对象的属性)。我想要一个按给定的每个键对数组进行排序的函数。

我试图遍历键数组并将每个键从数组中弹出然后排序,但是将该键添加到我用来对数组进行排序的三元组一直给我带来问题。

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);
}

标签: javascriptangulartypescript

解决方案


这是一个基于键数组进行排序的递归函数。如果您需要解释,请告诉我。

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) ;
}

推荐阅读