JS对象数组多条件排序

JS数组多条件排序基于Array.sort()方法,首先要了解sort()方法的用法。
sort()方法可以传入一个函数作为参数,然后依据该函数的逻辑,进行数组的排序。
eg:

var a = [2, 3, 5, 1, 0, 9]
a.sort(function(a, b){return a-b})

sort()方法接收函数作为参数时,排序主要根据传入函数的返回值是否大于0进行排序。
1)当 a-b < 0时,则a元素排在b元素的前面;(a、b元素位置不变)
2)当a-b= 0时,a,b元素的位置不变;
3)当a-b > 0时,则b元素排在a元素的前面。(a、b元素位置交换)
当数组元素为对象时,若要根据对象的多个属性进行排序,就涉及到多条件排序。

var list = [{}, {}, {}]
list.sort(cardsSortRule)
// 排序规则函数   
cardsSortRule (pre, next) {
  if (!pre.expireFlag && pre.expireFlag === next.expireFlag) {
    // 一级分类内部的二级排序:没过期时,激活时间倒序
    return next.effectiveTimeStart - pre.effectiveTimeStart // -1
  } else if (pre.expireFlag && pre.expireFlag === next.expireFlag) {
    // 一级分类内部的二级排序:过期时,过期时间倒序
    return next.expireTime - pre.expireTime // -1
  } else {
    // 最外层一级大类排序:没过期排在过期前面
    if (pre.expireFlag && !next.expireFlag) {
      return 1
    } else {
      return -1
    }
  }
}
    
console.table(list)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值