当前位置: 首页 > article >正文

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博客


http://www.kler.cn/a/162361.html

相关文章:

  • C语言入门到精通(第六版)——第十六章
  • C语言 | Leetcode C语言题解之第557题反转字符串中的单词III
  • 豆瓣均分9:不容错过的9本大模型入门宝藏书籍,非常详细收藏我这一篇就够了
  • 三正科技笔试题
  • Springboot 启动端口占用如何解决
  • ArcGIS Pro属性表乱码与字段名3个汉字解决方案大总结
  • 校园网无法登录IEEE
  • 健身检测设备——智能脂肪秤芯片方案
  • gitlab注册无中国区电话验证问题
  • 免费的AI改写工具推荐,AI改写工具大全
  • vivado $clog2函数
  • Reactor实战,创建一个简单的单线程Reactor(理解了就相当于理解了多线程的Reactor)
  • 时间复杂度为 O(n^2) 的排序算法 | 京东物流技术团队
  • 智能优化算法应用:基于蜣螂算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 批量免费AI写作工具,批量免费AI写作软件
  • 华为电视盒子 EC6108V9C 刷机成linux系统
  • 【推荐系统】推荐算法数学基础
  • 【C++】:STL源码剖析之vector类容器的底层模拟实现
  • Theamleaf导出pdf模版编写(原始th/td编写表格)
  • 前端:HTML+CSS+JavaScript实现轮播图2
  • 网络运维与网络安全 学习笔记2023.12.1
  • 设计图中时序图
  • 搞懂HashTable, HashMap, ConcurrentHashMap 的区别,看着一篇就足够了!!!
  • API成批分配漏洞介绍与解决方案
  • 游戏策划常用的ChatGPT通用提示词模板
  • vue实现页面之间的el-select同步数据选项