javascript、js数组排序、多条件数组排序


开发时经常遇到 排序问题, 比如

遇到 对数据进行 多条件排序

/**
     * 搜索表单
     * @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)
      })
    }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM