Javascript 前端分页——根据页面大小(pageSize)和总行数(total)计算总页面数(totalPage)
分页时,根据页面大小(pageSize)和总行数(total),计算总页面数(totalPage)
一:总行数取余页面大小,等于0,则页数为整页数,否则有余数,则页数为正页数加一
// 总行数取余页面大小,等于0,则页数为整页数,否则有余数,则页数为正页数加一
const totalPage = (total % pageSize == 0) ? (total / pageSize) : (total / pageSize + 1)
二:总页数=(总数-1)/每页数量+1
// 总页数 =(总数 - 1)/ 每页数量 + 1
const totalPage = (total - 1) / pageSize + 1
三:总页数=(总数 + 每页数量 - 1)/ 每页数量
// 总页数=(总数+每页数量-1)/每页数量
const totalPage = (total + pageSize - 1) / pageSize
简述一下第三个是如何证明的:
1. 特殊情况total = 0时,为0页
2. total大于等于一页时:
2.1 整除的情况下:total / pageSize 满足
2.2 有余数的情况下,就多加一页: total / pageSize + 1 等价于 (total + pageSize) / pageSize
3. total小于页面大小时,为1页
3.1 当total = 1时,total需要再加上整数x,才够一页,即(total + x) / pageSize,x ∈ [pageSize - 1, 2(pageSize - 1)]
3.2 当total = pageSize - 1时,total需要再加上整数x,才够一页,即(total + x) / pageSize,x ∈ [1, pageSize]
为了满足情况3.1、3.2,二者取交集,所以total需要加上整数 x ∈ [pageSize - 1, pageSize]
如果x取pageSize,会影响情况2.1造成页数多一页,不会影响情况2.2,故舍去
又因为pageSize - 1为 total 除以 pageSize 的最大余数,对total大于等于一页的两种情况均不影响,所以x应取pageSize - 1
所以综上所述:总页数totalPage = (total + pageSize - 1) / pageSize,代入total=0时,为0页,满足,证明完毕!
total / pageSize + 1等价于(total + pageSize) / pageSize: 取整(/ 二元操作符)是一个整体和另一个整体进行运算,不可化简,此处等价于有前提条件。
(total + pageSize - 1) / pageSize 不可化简成 (total - 1) / pageSize + 1,因为此处是取整,不是除法。
四:使用Math.ceil()函数,进1法取整。Math.ceil(total / pageSize)
// 使用Math.ceil()函数,进1法取整
const totalPage = Math.ceil(total / pageSize)
Math.Ceiling(0.0) //0
Math.Ceiling(0.1) //1
Math.Ceiling(0.5) //1
Math.Ceiling(0.6) //1
Math.Ceiling(0.7) //1
Math.Ceiling(1.01) //2
引用:
【数据结构与算法】分页时,根据页面大小和总行数,计算总页面数(含推理过程)_分页查询计算总页数_debug4flaw的博客-CSDN博客
分页计算总页数算法:总页数=(总数-1)/每页数量+1----总页数=(总数+每页数量-1)/每页数量_总页数怎么算-CSDN博客