我想排序数组的数字递减与自定义排序的基础上一个数字外或内数组在一个步骤没有分裂或过滤和团聚 我使用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,3,2,1,5,6,8,9,10]

我try 了以下代码,但没有成功.

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

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

推荐答案

您可以按以下方式执行:

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

排序函数接受两个元素,并决定哪一个应该先go .在你的情况下,有三种情况:

  • 这两个数字在特殊数字之上:最小的先走
  • 一个数字在特殊数字之上,一个在下面:最小的先走
  • 两者都在下面:最大的先走.

所以基本上,当两者都小于或等于sortBasedValue时,我们将它们向后排序(表示为b - a),否则我们将它们正常排序(表示为a - b).

Javascript相关问答推荐

当promise 在拒绝处理程序被锁定之前被拒绝时,为什么我们会得到未捕获的错误?

在贝塞尔曲线的直线上找不到交叉点:(使用@Pomax的bezier.js)

如何最好地从TypScript中的enum获取值

使用axios.获取实时服务器时的404响应

使用JavaScript重新排序行

为什么我的导航条打开状态没有在窗口addeventlistener(Reaction Js)中更新?

变量的值在Reaction组件中的Try-Catch语句之外丢失

我创建了一个创建对象的函数,我希望从该函数创建的对象具有唯一的键.我怎么能做到这一点?

如何将多维数组插入到另一个多维数组中?

使用js构造一个html<;ath&>元素并不能使其正确呈现

如何在FastAPI中为通过file:/URL加载的本地HTML文件启用CORS?

将范围 Select 器添加到HighChart面积图

无法检索与Puppeteer的蒸汽游戏的Bundle 包价格

为什么我看到的是回复,而不是我的文档?

在JavaScript中将Base64转换为JSON

由于http.get,*ngIf的延迟很大

我想为我的Reaction项目在画布上加载图像/视频,图像正在工作,但视频没有

验证Java脚本函数中的两个变量

用内嵌的含selenium的Java脚本抓取网站

调试jQuery代码以获取所有行的总和(票证类型)