js根據多個對象屬性按順序對數組進行排序


一、遇到的情況

需要對數組進行排序,按屬性1,屬性2,屬性3。。。的優先級進行升序或降序

 

二、 解決方法

采用js中數據的sort排序方法,

const arr = [需要排序的數據內容]
arr.sort(this.compareType('屬性名', '屬性名1', '屬性名2', '屬性名3', '升序用up降序用down'))
//compareType是定義好的函數

自定義排序函數 compareType(目前僅實現4屬性順位排序,可自行刪除或增加)

compareType(propertyName, propertyName1, propertyName2, propertyName3, str) {
      if (str === 'down') {
        // 降序的
        return function(a, b) {
          if (b[propertyName] === a[propertyName]) {
            // 第一順位相同時,找第2順位
            if (b[propertyName1] === a[propertyName1]) {
              // 第二順位相同時,找第3順位
              if (b[propertyName2] === a[propertyName2]) {
                // 第三順位相同時,找第4順位
                return b[propertyName3] - a[propertyName3]
              } else {
                return b[propertyName2] - a[propertyName2]
              }
            } else {
              return b[propertyName1] - a[propertyName1]
            }
          } else {
            return b[propertyName] - a[propertyName]
          }
        }
      } else {
        // 升序的
        return function(b, a) {
          if (b[propertyName] === a[propertyName]) {
            // 第一順位相同時,找第2順位
            if (b[propertyName1] === a[propertyName1]) {
              // 第二順位相同時,找第3順位
              if (b[propertyName2] === a[propertyName2]) {
                // 第三順位相同時,找第4順位
                return b[propertyName3] - a[propertyName3]
              } else {
                return b[propertyName2] - a[propertyName2]
              }
            } else {
              return b[propertyName1] - a[propertyName1]
            }
          } else {
            return b[propertyName] - a[propertyName]
          }
        }
      }
    }

 

ps: 偶爾更新一下,如有錯誤,還請指正


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM