function generatePageRange(currentPage, lastPage) { const delta = 2; const range = []; for (let i = Math.max(2, (currentPage - delta)); i <= Math.min((lastPage - 1), (currentPage + delta)); i += 1) { range.push(i); } if ((currentPage - delta) > 2) { range.unshift('...'); } if ((currentPage + delta) < (lastPage - 1)) { range.push('...'); } range.unshift(1); if (lastPage !== 1) range.push(lastPage); return range;} console.log('Selected page ${i}:', generatePageRange(5, 10));我有总页面、页面范围和当前页面。电流输出 [1、“...”、3、4、5、6、7、“...”、10]预期产出总页数 = 10,范围 = 5页码 1 => 1, 2, 3, ---, 10页码 2 => 1,2,3, ---, 10页码 3 => ---, 3,4,---,10页码 4 => ---, 4,5,---,10页码 10 => 1, ---, 8, 9,10
1 回答
胡说叔叔
TA贡献1804条经验 获得超8个赞
对于非动态方法,您可以将结果分为三个部分,其中不同的实际页面创建不同的数组。
function getPagination(page, total) {
if (page < 3) return [1, 2, 3, '...', total];
if (page < total - 2) return ['...', page - 1, page, '...', total];
return [1, '...', total - 2, total - 1, total];
}
for (let i = 1; i <= 10; i++) console.log(i, ':', ...getPagination(i, 10));
.as-console-wrapper { max-height: 100% !important; top: 0; }
添加回答
举报
0/150
提交
取消