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

旧城冷巷雨未停 提交于 2020-03-26 02:31:21

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

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

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

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!