一、遇到的情况
需要对数组进行排序,按属性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: 偶尔更新一下,如有错误,还请指正