You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript新手求教:如何正确计算分页的总页数?

如何在JavaScript中正确计算分页总页数?

嘿,刚学JavaScript的时候我也踩过这个分页计算的坑!你说的场景太典型了——23条数据每页显示20条,明明应该是2页,但直接用除法加1或者Math.round都得不到正确结果,确实让人头疼。

先说说为啥之前的方法不行:

  • 直接用count / per_page_count + 1的话,如果刚好整除(比如总数据20条),算出来就是1 + 1 = 2,这就多了一页,明显不对;
  • Math.round是四舍五入,23/20=1.15,它会把这个数舍成1,可我们哪怕多1条数据都需要额外一页,所以这个方法也不适用。

给你两种最常用的正确解法:

方法一:用Math.ceil()向上取整

这是最直观也最推荐的方法,Math.ceil()会把任何小数向上取整为最近的整数,完美匹配分页的需求——只要有剩余数据,就多算一页。

var count = 23;
var per_page_count = 20;
var total_pages = Math.ceil(count / per_page_count);
console.log(total_pages); // 输出2,符合预期

如果总数据是20条,20/20=1,Math.ceil(1)还是1,也不会出错。

方法二:整数运算技巧(避免浮点数)

如果你想绕开浮点数运算,也可以用这个小技巧:把总数据加上每页条数减1,再做整数除法。原理是通过补数的方式,让剩余数据“凑够”一页的数量,从而得到正确的页数。

var count = 23;
var per_page_count = 20;
// 用Math.floor做整数除法,或者用~~运算符(效果一样)
var total_pages = Math.floor((count + per_page_count - 1) / per_page_count);
// 或者写成:var total_pages = (count + per_page_count - 1) ~~ per_page_count;
console.log(total_pages); // 同样输出2

算一下:23+20-1=42,42/20=2.1,Math.floor之后是2;如果是20条数据,20+20-1=39,39/20=1.95,Math.floor之后是1,完全正确。

这两种方法都能解决你的问题,选哪个看你习惯就行~

内容的提问来源于stack exchange,提问作者sof-03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:10:50