1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- export default {
- data() {
- return {}
- },
- methods: {
- /**
- * 列表数组排序
- * @param list [Array] 要进行排序的数组
- * @param field {String} 要进行排序的字段
- * @param reduce {Boolean} 排序规则 默认为正序排列 false 正序 true 倒序
- */
- mixinsSort(list, field, reduce = false) {
- let _list = list.concat([])
- let arr = field.split(':')
- if (reduce) {
- // 倒序
- _list = _list.sort((a, b) => {
- let val1 = a[arr[0]], val2 = b[arr[0]]
- if (arr.length > 1) {
- for (let i = 1; i < arr.length; i++) {
- val1 = val1[arr[i]]
- val2 = val2[arr[i]]
- }
- }
- return this._compare(val2, val1)
- })
- } else {
- // 正序
- _list = _list.sort((a, b) => {
- let val1 = a[arr[0]], val2 = b[arr[0]]
- if (arr.length > 1) {
- for (let i = 1; i < arr.length; i++) {
- val1 = val1[arr[i]]
- val2 = val2[arr[i]]
- }
- }
- return this._compare(val1, val2)
- })
- }
- return _list
- },
- _compare(a, b) {
- // 小于 0 ,那么 a 会被排列到 b 之前
- // 等于 0 , a 和 b 的相对位置不变
- // 大于 0 , b 会被排列到 a 之前
- if (a < b) {
- return -1;
- }
- if (a > b) {
- return 1;
- }
- return 0;
- }
- }
- }
|