Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 算法页面链接_Javascript_Algorithm_Pagination_Typescript - Fatal编程技术网

Javascript 算法页面链接

Javascript 算法页面链接,javascript,algorithm,pagination,typescript,Javascript,Algorithm,Pagination,Typescript,我正在尝试根据此解决方案确定分页: 我从来没有真正做过复杂的逻辑,所以我很难理解它。这是我的代码: var allPages = 50; var current = 16; var pageLinks = []; function updatePageLinks(current, allPages) { if (current > 1) { pageLinks.push('<', 1); }

我正在尝试根据此解决方案确定分页:

我从来没有真正做过复杂的逻辑,所以我很难理解它。这是我的代码:

var allPages = 50;
var current = 16;
var pageLinks = [];

function updatePageLinks(current, allPages) {
            if (current > 1) {
                pageLinks.push('<', 1);
            }
            if (current > 2) {
                pageLinks.push('...');

                if (current == allPages && allPages > 3) {
                    pageLinks.push((current - 2), (current - 1));
                }
            }
            if (current != 1 && current != allPages) {
                pageLinks.push(current);
            }
            if (current < allPages - 1) {
                pageLinks.push((current + 1), (current + 2), '...');

                if (current == 1 && allPages > 3) {
                    pageLinks.push((current + 2), '...');
                }
            }
            pageLinks.push(allPages);                

            if (current < allPages) {
                pageLinks.push('>');
            }
            $('#pages').append("<a href='#'>  " + pageLinks + '</a>');
        }
var allPages=50;
无功电流=16;
var pageLinks=[];
函数updatePageLinks(当前,所有页面){
如果(当前>1){
页面链接。推送(“”);
}
$(“#页”)。追加(“);
}
我将从应用程序的另一部分加载页码,但目前我只是设置页码,以便测试不同的边缘情况。 上面的当前页面是16页,总页面是50页,因此我希望输出类似于:

其中前2页和最后2页始终显示,当前页+和-1

问题的例子:

  • 如果当前页面设置为1,则输出为2,3,…,50>
  • 如果当前页面为2,则输出为“不打印4”

  • 如果当前页面设置为2且总计为50,则输出为

  • 如果当前页面设置为5,则输出为

  • 有人能帮我吗?

    我使用您链接的数据库中的最后一个算法更新了您的代码

    updatePageLinks(16, 50);
    
    function print(value) {
        $('#pages').append("<a href='#'>"+value+"</a> ");
    }
    
    function updatePageLinks(current, allPages) {
        if(allPages==0) return;
        if(current>1)print("<");
        print(1);
        if(current>2) {
            print("...");
            if(current===allPages&&allPages>3)
                print(current-2);
            print(current-1);
        }
        if(current!=1&&current!=allPages)
            print(current);
        if(current<allPages-1) {
            print(current+1);
            if(current==1&&allPages>3)
                print(current+2);
            print("...");
        }
        print(allPages);
        if(current<allPages)
            print(">");
    }
    
    updatePageLinks(16,50);
    函数打印(值){
    $(“#页”)。追加(“”);
    }
    函数updatePageLinks(当前,所有页面){
    如果(allPages==0)返回;
    
    如果(当前>1)打印(“我使用链接中的最后一个算法更新了代码

    updatePageLinks(16, 50);
    
    function print(value) {
        $('#pages').append("<a href='#'>"+value+"</a> ");
    }
    
    function updatePageLinks(current, allPages) {
        if(allPages==0) return;
        if(current>1)print("<");
        print(1);
        if(current>2) {
            print("...");
            if(current===allPages&&allPages>3)
                print(current-2);
            print(current-1);
        }
        if(current!=1&&current!=allPages)
            print(current);
        if(current<allPages-1) {
            print(current+1);
            if(current==1&&allPages>3)
                print(current+2);
            print("...");
        }
        print(allPages);
        if(current<allPages)
            print(">");
    }
    
    updatePageLinks(16,50);
    函数打印(值){
    $(“#页”)。追加(“”);
    }
    函数updatePageLinks(当前,所有页面){
    如果(allPages==0)返回;
    
    如果(当前>1)打印(“您的算法似乎与链接的算法不匹配
    PrintPageLinksFinalRealy
    。您的算法似乎与链接的算法不匹配
    PrintPageLinksFinalRealy
    。非常简洁明了的解决方案您的解决方案有缺陷,只需像这样调用
    updatePageLinks
    updatePageLinks(3,5)
    非常简洁明了的解决方案您的解决方案有bug,只需像这样调用
    updatePageLinks
    updatePageLinks(3,5)