对象数组分组排序

451 阅读1分钟

需求

升序
按 group 整体排
group 内部按 order 排

data = [
  {
    value: "value1",
    order: 1,
    group: 0
  }
]

思路

分解下问题,本质就是排序

  • 排 group:sort((a, b) => a.group - b.group)
  • 排内部:sort((a, b) => a.order - b.order)
  • 排二者:只要 order 远远小于 group,那其实可以直接以 group 为主

实现

const _sortByGroup = (arr) => {
  arr.sort((a, b) => {
    // 由于是减,所以内部反序
    return (a.group - b.group)*1000 - (b.order - a.order)
  })
}