为了账号安全,请及时绑定邮箱和手机立即绑定

带范围的简单分页算法

带范围的简单分页算法

偶然的你 2023-07-29 15:58:57
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; }


查看完整回答
反对 回复 2023-07-29
  • 1 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信