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
相关产品推荐
相关产品推荐

