js 实现对表格数据排序

2024 年 7 月 31 日 星期三(已编辑)
/
33
摘要
对数据自定义排序
这篇文章上次修改于 2024 年 7 月 31 日 星期三,可能部分内容已经不适用,如有疑问可询问作者。

阅读此文章之前,你可能需要首先阅读以下的文章才能更好的理解上下文。

js 实现对表格数据排序

通过 js 自定义方法,实现对表格数据,根据某一列自定义排序

原表格数据

datenameaddresseffective_typeOFFER_PLAN_TYPE
2016-05-02王小虎3上海市普陀区金沙江路 1518 弄生效中增值业务
2016-05-04王小虎4上海市普陀区金沙江路 1517 弄生效中增值业务
2016-05-04王小虎5上海市普陀区金沙江路 1517 弄生效中增值业务
2016-05-04王小虎6上海市普陀区金沙江路 1517 弄生效中活动
2016-05-04王小虎7上海市普陀区金沙江路 1517 弄生效中套餐
2016-05-04王小虎1上海市普陀区金沙江路 1519 弄次月失效套餐
2016-05-04王小虎2上海市普陀区金沙江路 1516 弄待生效套餐

需求:

  • 首先根据 effective_type 字段,次月生效的排在最前面,其次是待生效,然后是生效中
  • 然后根据 OFFER_PLAN_TYPE 字段,在满足上面要求的情况下,实现,套餐,活动和增值业务的顺序。
  • 最后在上述都相同的情况下,date 按降序排序

实现代码:

const sort = ['次月失效','待生效','生效中']
const sort2 = ['套餐', '活动', '增值业务']
      
function customSort() {
  const order = this.sort;
  const order2 = this.sort2;
  //这里的 tableData 是需要排序的数据
  this.tableData.sort((a, b) => {
    const orderdif =  order.indexOf(a.effective_type) - order.indexOf(b.effective_type);
    if (orderdif !== 0) return orderdif;

    const offdif = order2.indexOf(a.OFFER_PLAN_TYPE) - order2.indexOf(b.OFFER_PLAN_TYPE)
    if (offdif !== 0) return offdif;

    return new Date(b.date) - new Date(a.date)
  });
}
  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...