分页计算algorithm

我正在计算分页:

var pagination = { total: result.length, per_page: itemsPerPage, // required current_page: currentPage, // required last_page: users.length / itemsPerPage, // required from: (itemsPerPage * pageNumber) + 1, to: itemsPerPage * (pageNumber + 1) //required }; 

假设结果长度是2,itemsPerPage是5,currentPage是1,我得到这个:

 total: 2 per_page: 5 current_page: 1 last_page: 0.4 from: 6 to: 10 

我觉得有些事情是不对的。

要循环获取最大值,可以在last_page使用last_page 。 每页可以是静态的,手动定义。 那么,可以从(currentPage -1) * itemsPerPage) + 1 。 如果当前页面为1,则((1 -1)* 5)+ 1 = 1.第二页:((2 -1)* 5)+ 1 = 6,依此类推。 to可以是currentPage * itemsPerPage 。 如果当前页面是1,那么1 * 5 = 5。第二页面:2 * 5 = 10。看这个:

 var pagination = { total: result.length, per_page: itemsPerPage, current_page: currentPage, last_page: Math.ceil(result.length / itemsPerPage), from: ((currentPage -1) * itemsPerPage) + 1, to: currentPage * itemsPerPage }; 
 Total = 15; per_page = 5; currentPage = 1; last_page = truncate (15 / 5) = 3; from: ((1-1) * 5) + 1 = 1 //first page ((2-1) * 5) + 1 = 6 //second page to: 1 * 5 = 5 //first page 2 * 5 = 10 // second page From 1 to 5 // first page From 6 to 10 // second page From 11 to 15 // last page 

last_page应该使用Math.ceil Math.ceil() ,这样就没有浮点数了。 那么0.4将是1,这是正确的。 from应该是itemsPerPage * (pageNumber - 1) – 这个假设值是基于0的,pageNumber从1开始,然后应该是Math.min()的itemsPerPage * pageNumbertotal.length ,以便从使用-count plus itemsPerPage,或者如果此值大于总项目数,则使用总项目数。