iview table自定义排序规则

下方 obj 就是columns中得一项

let obj = {
		title: item.name,
		minWidth: item.width,
		key: item.enName,
		sortable: item.sortable,
		sortMethod: (a, b, type) => {
			return this.$utility.sortFun(a, b, type)
		},
		dataSourceList: item.dataSourceList || [],
	}

sortFun(a, b, type) {
		console.log(a, b, type)
		// asc从小到大,排序规则,b 是第一个值
		// 1.数字优于字母
		// 2.字母根据首字母排序,相同得话比较下一位置字符, 数字排序也一样,比较下一位置
		// 3.如果一样,比较下一位置字符
		// 4.空字符,null,undefined 数字当0来排序,字符串当空字符来排序 基本是最小得
		if (type == asc) {
			if (typeof a == number) {
				let aa = a ? a : 0
				let bb = b ? b : 0
				return aa > bb ? -1 : 1
			} else {
				let aa = a ? a : 
				let bb = b ? b : 
				return aa.localeCompare(bb)
			}
		} else {
			if (typeof a == number) {
				let aa = a ? a : 0
				let bb = b ? b : 0
				return bb > aa ? -1 : 1
			} else {
				let aa = a ? a : 
				let bb = b ? b : 
				return bb.localeCompare(aa)
			}
		}
	},
经验分享 程序员 微信小程序 职场和发展