微信小程序:对象数组排序(Array sort() 比较函数)

2021-10-30  本文已影响0人  我的小小笔尖

目标:
按照数组中对象的三个属性('isSorted', 'beforeIndex', 'afterIndex')进行排序
isSorted==true 排在前面,isSorted==false 排在后面
isSorted==true 时,再按照 afterIndex 值由小到大排序
isSorted==false 时,再按照 beforeIndex 值由小到大排序

    // 数组重新排序
    var compare = function (_isSorted, _beforeIndex, _afterIndex) {
      return function (obj2, obj1) {
        console.log(obj1, obj2)
        var val1 = obj1[_isSorted]
        var val2 = obj2[_isSorted]
        if(val1 && val2) {
          // 两者都已排序
          var val3 = obj1[_afterIndex]
          var val4 = obj2[_afterIndex]
          if(val3 <= val4) {
            return 1
          }else {
            return -1
          }
        }else if(!val1 && !val2) {
          // 两者都未排序
          var val5 = obj1[_beforeIndex]
          var val6 = obj2[_beforeIndex]
          if(val5 <= val6) {
            return 1
          }else {
            return -1
          }
        }else {
          if(val1) {
            return 1
          }else {
            return -1
          }
        }
      }
    }
    recallList.sort(compare('isSorted', 'beforeIndex', 'afterIndex'))

适用场景:
有一个乱序的对象数组,需要对该数组进行一次排序。上面的代码适用。

上一篇 下一篇

猜你喜欢

热点阅读