如何在Javascript中对结果数组进行分页

如何在Javascript中对结果数组进行分页,javascript,arrays,pagination,Javascript,Arrays,Pagination,此函数可以对项目数组进行分页: function paginate(res,page,page_size,max_page_size) { page=page||1; page_size=page_size||10; max_page_size=max_page_size||100; page_size=page_size>max_page_size?max_page_size:page_size; var p

此函数可以对项目数组进行分页:

function paginate(res,page,page_size,max_page_size) {
        page=page||1;
        page_size=page_size||10;
        max_page_size=max_page_size||100;
        page_size=page_size>max_page_size?max_page_size:page_size;
        var pages=Math.round( res.length / page_size),
            items=[];
        for( var p=1; p <= pages; p++) {
            var start= Math.round( page_size * (p-1) );
            items.push( res.slice(start,start+page_size) );
        }
        return page < items.length?items[page-1]:items[ items.length-1 ];
    }
函数分页(分辨率、页面、页面大小、最大页面大小){
第页=第1页;
页面大小=页面大小| 10;
最大页面大小=最大页面大小100;
页面大小=页面大小>最大页面大小?最大页面大小:页面大小;
var pages=数学圆整(分辨率长度/页面大小),
项目=[];
对于(var p=1;p最大页面大小?最大页面大小:页面大小;
var pages=数学圆整(分辨率长度/页面大小),
项目=[];

for(var p=1;p尚未确定代码的确切问题,但我记得在使用舍入函数到达数组末尾时,在保持状态和重置索引方面做了很多工作

最后,我制作了一个“chunker”,将数组划分为块,并将其连接到使用previous()和next()方法呈现数组内容的内容,以获取数组的正确艺术。它在视图中实际表示的页面取决于要缓存的视图

var Chunker = function Chunker( config ) {
        if ( !Array.isArray( config.data ) ) {
            throw new Error('chunker source is not an array');
            return false;
        }
        this.data = config.data;
        this.index = 0;
        this.length = config.len || config.data.length; // Amount of items per chunk. When not defined, will return the entire array.
    };
Chunker.prototype = {
    'constructor' : Chunker,
    'index' : function index( number ) { // => current index (getter) || => this (setter)
        if ( number !== undefined ) {
            this.index = index;
            return this;
        }
        else return this.index;
    },
    'current' : function current() { // => { "index", "data" }
        return {
            "index" : this.index,
            "data" : this.data.slice( this.index, this.index + this.length )
        };
    },
    'next' : function next() { // => next chunk
        this.index += this.length;
        if ( this.index > this.data.length ) this.index = this.data.length - (this.data.length % this.length);
        return this.current();
    },
    'previous' : function previous() { // => previous chunk
        this.index -= this.length;
        if (this.index < 0 ) this.index = 0;
        return this.current();
    },
    'reset' : function reset() { // => this
        this.index(0);
        return this;
    }
};   
var Chunker=函数Chunker(配置){
如果(!Array.isArray(config.data)){
抛出新错误(“chunker源不是数组”);
返回false;
}
this.data=config.data;
该指数=0;
this.length=config.len | | | config.data.length;//每个块的项目数。如果未定义,将返回整个数组。
};
Chunker.prototype={
“构造函数”:Chunker,
'index':函数索引(number){/=>当前索引(getter)| |=>此(setter)
如果(数字!==未定义){
这个指数=指数;
归还这个;
}
否则返回此.index;
},
“当前”:函数current(){/=>{“索引”,“数据”}
返回{
“索引”:这个索引,
“data”:this.data.slice(this.index,this.index+this.length)
};
},
“next”:函数next(){/=>next chunk
this.index+=this.length;
如果(this.index>this.data.length)this.index=this.data.length-(this.data.length%this.length);
返回this.current();
},
“previous”:函数previous(){/=>previous chunk
this.index-=this.length;
如果(this.index<0)this.index=0;
返回this.current();
},
“reset”:函数reset(){/=>此
这是指数(0);
归还这个;
}
};   

你指的是你的最后一个for循环吗?
控制台.log(“page”,i,paginate(list,i,2,2))
?@Matt如果你看到index max值被设置为
8
,页面的
2
结果,那么你可以看到,从第五个元素开始(列表中有10个元素),其他三个结果在页面中都是相同的。将(
for(var i=1;i<8;i++)更改为(
for(var i=1;i@matt-nope)如果问题出在函数中,请尝试使用
console.log(paginate(list,5,2,2))
console.log(paginate(list,6,2,2))
,您将始终获得相同的值。您的报税表被告知,对于任何大于
项目的项目,您将返回
项目的最后索引。长度
为5。如果您要求第5+页,它将给您最后一页,即5(
项目[4]
)。您希望为
分页(列表,6,2,2)
返回什么?