You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按三个属性pricePerUnitPerHour/divisible/creationDateTime对数组升序排序

多属性排序实现方案

实现代码

tableSort() {
  this.searchFilteredData.sort(function (a, b) {
    // 第一优先级:pricePerUnitPerHour 升序
    const priceDiff = a.pricePerUnitPerHour - b.pricePerUnitPerHour
    if (priceDiff !== 0) return priceDiff

    // 第二优先级:divisible为true的项排在前面
    const divisibleDiff = Number(b.divisible) - Number(a.divisible)
    if (divisibleDiff !== 0) return divisibleDiff

    // 第三优先级:creationDateTime 时间戳升序
    return a.creationDateTime - b.creationDateTime
  })
}

逻辑说明

  • 多属性排序核心是按优先级依次比较,只有前一优先级的两个值相等时,才进入下一优先级判断
  • 价格升序直接用a.pricePerUnitPerHour - b.pricePerUnitPerHour即可实现,价格更低的项排在前面
  • divisible排序利用布尔值转数字的特性:true转为1、false转为0,用b的divisible数值减a的数值,保证值为1的项排在0前面
  • 时间戳升序逻辑和价格排序一致,直接相减即可实现更早的时间排在前面

可选优化

Array.sort是原地排序方法,会直接修改原数组,如果需要保留原数组数据,可以先复制一份再排序:

this.searchFilteredData = [...this.searchFilteredData].sort(/* 上述排序函数 */)

内容的提问来源于stack exchange,提问作者user17190872

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:54:05