js 实现对表格数据排序
通过 js 自定义方法,实现对表格数据,根据某一列自定义排序
原表格数据
date | name | address | effective_type | OFFER_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)
});
}