对 Angular 中的数字数组应用自定义排序

问题描述 投票:0回答:1

我想对一组数字进行降序排序,根据数组外部或内部的数字一步进行自定义排序,而不需要拆分或过滤和团聚 我使用 Angular 17 和 Rxjs 7.8

例如,如果我有这个数字数组:

items:Array<number>=[2,6,4,8,1,9,3,5,10];

我想根据任何数字对这个数组进行排序,例如:7 所以预期的结果会是这样的

[6,5,4,3,2,1,8,9,10]

数字 4 的另一个示例,预期结果将是:

[4,3,2,1,5,6,8,9,10]

我尝试了以下代码,但没有成功

const sortBasedValue = 7
this.sortedItems = this.items.sort((a, b) => {
      if (sortBasedValue > b) {
        return 1;
      }
      if (sortBasedValue < b) {
        return -1;
      }
      return 0;
  });

那么这种自定义排序可以一步完成吗?

arrays angular sorting rxjs
1个回答
0
投票
function reorderArray(arr: number[], target: number): number[] {
  return arr
    .filter(x => x <= target)
    .sort((a, b) => b - a)
    .concat(arr.filter(x => x > target).sort((a, b) => a - b));
}

// Example usage:
const result = reorderArray([2,6,4,8,1,9,3,5,10], 4);
console.log(result); // Output: [4,3,2,1,5,6,8,9,10]
© www.soinside.com 2019 - 2024. All rights reserved.