开发时经常遇到 排序问题, 比如
遇到 对数据进行 多条件排序
/**
* 搜索表单
* @typedef {Object} Condition
* @property {string} key 关键字
* @property {boolean} isAscending 是否升序
*/
/**
* 数组排序 (带条件类型)
* @param arr 原数据
* @param {[Condition]} condition 条件列表
* @returns {[]}
*/
var fns = function (arr, condition) {
/**
* 开始排序
* @param {object} itemA 对比值A
* @param {object} itemB 对比值B
* @param {[Condition]} condition 条件列表
* @param {number} index 当前条件排序下标
* @returns {number}
*/
var sort = function (itemA, itemB, condition, index) {
if (!condition[index]) return 0
const { key, isAscending = true } = condition[index]
const a = itemA[key]
const b = itemB[key]
if (a === b) {
return sort(itemA, itemB, condition, index + 1)
} else {
return isAscending ? a - b : b - a
}
}
return arr.sort((a, b) => {
return sort(a, b, condition, 0)
})
}