2016-09-23 10 views
1

私は改ページを計算しようとしています:私は何かを考えるページネーション計算アルゴリズム

total: 2 
per_page: 5 
current_page: 1 
last_page: 0.4 
from: 6 
to: 10 

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 
}; 

は、結果の長さが2であるとしましょう、itemsPerPageが5で、currentPageには1ですが、私はこれを得ましたそうではありません。

答えて

4

最大値を丸めるには、Math.ceillast_pageに設定します。 1ページあたりのitensは静的で、手動で定義することができます。次に、from(currentPage -1) * itemsPerPage) + 1とすることができます。現在のページが1の場合、((1 -1)* 5)+ 1 = 1. 2ページ目:((2 -1)* 5)+ 1 = 6など。 toはcurrentPage * itemsPerPageです。 2 * 5 = 10ルックこの:現在のページは1、その後1 * 5 = 5. 2ページ目である場合

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 
 
};
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 page
答え関数の形で上記

1

last_pageは、Math.ceil()を使用する必要があります。そのため、浮動小数点数はありません。 0.4は1になりますが、これは正しいです。 は、itemsPerPage * pageNumbertotal.lengthのMath.min()である必要があります。これにより、from-countプラスitemsPerPageのいずれかが使用されるようになります。または、0から始まり、pageNumberが1から始まると仮定してください。 from itemsPerPage * (pageNumber - 1) - この値が合計アイテム数より大きい場合、合計アイテム数が使用されます。

+0

ありがとうございましたNikxDa – Alvin

0

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 
    }; 
}; 
関連する問題