一、遇到的情況
需要對數組進行排序,按屬性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: 偶爾更新一下,如有錯誤,還請指正