Alv*_*vin 2 javascript algorithm node.js
我正在尝试计算分页:
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
};
Run Code Online (Sandbox Code Playgroud)
假设结果长度为2,itemsPerPage为5,currentPage为1,我得到了:
total: 2
per_page: 5
current_page: 1
last_page: 0.4
from: 6
to: 10
Run Code Online (Sandbox Code Playgroud)
我认为有些不对。
要舍入最大值,可以使用Math.ceilon last_page。
每页的项目可以是静态的,可以手动定义。然后,from可以((currentPage - 1) * itemsPerPage) + 1。
然后可以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
};Run Code Online (Sandbox Code Playgroud)
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 pageRun Code Online (Sandbox Code Playgroud)
上面的答案以函数的形式:
function pagination(length, currentPage, itemsPerPage) {
return {
total: length,
per_page: itemsPerPage,
current_page: currentPage,
last_page: Math.ceil(length / itemsPerPage),
from: ((currentPage - 1) * itemsPerPage) + 1,
to: currentPage * itemsPerPage
};
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3707 次 |
| 最近记录: |