增删查改(CRUD)之删除数据重新计算页码-js

62 阅读1分钟

工作之余重新整理了下远古的代码,突然看到了这块的逻辑,试试优化了一下表格删除数据时计算页码的相关代码(更新页码)。

/**
 * @param pagination { { pageIndex: number, pageSize: number, total: number } }  分页参数
 * @param deleteLength { Number } 删除的条数
*/
function clacNewPageIndex(pagination, deleteLength) {
  const { pageIndex, pageSize, total } = pagination;
  if (deleteLength > total) { throw Error('删除条数大于总数') }
  // 判断删除的数据是否在当前页最后一页
  const newPageIndex = Math.ceil((total - deleteLength) / pageSize);
  return Math.min(pageIndex, newPageIndex); // 防止 newPageIndex < 1,正常情况下不会出现的
}


/* 案例一 */
const deleteLength1 = 5;
const pagination1 = {
  pageIndex: 3,
  pageSize: 10,
  total: 22,
};
console.log(
  '案例一: pageIndex 为',
  clacNewPageIndex(pagination1, deleteLength1)
);
/* 案例二 */
const deleteLength2 = 1; // 修改删除条数
const pagination2 = {
  pageIndex: 3,
  pageSize: 10,
  total: 22,
};
console.log(
  '案例二: pageIndex 为',
  clacNewPageIndex(pagination2, deleteLength2)
);
/* 案例三 */
const deleteLength3 = 1;
const pagination3 = {
  pageIndex: 2, // 修改当前页码
  pageSize: 10,
  total: 22,
};
console.log(
  '案例三: pageIndex 为',
  clacNewPageIndex(pagination3, deleteLength3)
);