簡析分頁邏輯

2022-03-09 09:38:08 字數 1745 閱讀 9276

今天所提到的就是乙個關於分頁邏輯的思考過程,是眾多分頁方式的一種,這裡簡單整理一下我的思考過程。

if(page_id == 1) else if(page_id > 1 && last_page > 1)

if(page_id == last_page) else if(last_page > 1 && page_id < last_page)

2.具備設定defaultpage頁後顯示省略號,這個邏輯需要考慮一些特殊情況,比如說:總頁數只有一頁,當然不能進入省略號的邏輯了

//threshold = step + 2; 臨界值

//pagesdefault最小是臨界值的二倍減去1

pagesdefault = parseint(pagesdefault) > 2*threshold-1 ? 2*threshold-1 : 5;

3.設定step,這個是分頁最重要的邏輯,這塊兒單獨詳細解釋一下:

首先判斷總頁數是否下於或等於defaultpage,下於的話就直接迴圈輸出即可

for(var i=1; i<=last_page; i++) else 

}

其次就是總頁數大於defaultpage,這又是這個邏輯中,最複雜的一塊兒。

要想直接想清楚這塊兒的處理邏輯其實挺繞的,我們運用簡單的數學歸納法,進行乙個歸納(以step=1為例)

一共有n頁,他有一下幾種邏輯:

page_id=1 1 2 ... n

page_id=2 1 2 3 ... n

page_id=3 1 2 3 4 ... n

page_id=4 1 ... 3 4 5 ... n

page_id=5 1 ... 4 5 6 ... n

...page_id=n-3 1 ... n-4 n-3 n-2 ... n

page_id=n-2 1 ... n-3 n-2 n-1 n

page_id=n-1 1 ... n-2 n-1 n

page_id=n 1 ... n-1 n

可以總結出來以下結論:

1.step=1

2.可以看出臨界值是3,也就是threshold=step+

3.以臨界值處理1~threshold的邏輯

//當前頁下於等於臨界值的時候,需要考慮當前頁的下一位情況,展示省略號和尾頁情況

for(var i=1; i<=next; i++) else

}if(next <= last_page-1)

if(next != last_page) else

}

4.一臨界值處理n-threshold+1~n的邏輯

//當前頁大於n-threshold並且下於n的時候,需要考慮當前頁的上一位情況,展示省略號和首頁情況

if(pre != 1) else

}if(pre >= 2)

for(var i=pre; i<=last_page; i++) else

}

//處理中間頁

tpl += '1';

tpl += '...';

for(var i=pre; i<=next; i++) else

}tpl += '...';

tpl += ''+last_page+'';

這樣整個邏輯就大工告成了,例子中是用js實現的邏輯,這個邏輯可以用在其他的程式語言中。

Windows基本磁碟結構簡析 三 邏輯分割槽

在mbr磁碟上,每個邏輯分割槽都對應有乙個資料結構,它類似於主引導記錄mbr,占用乙個扇區的空間,通常稱為ebr。在ebr中,只有分割槽表中的前兩項以及結束標誌0xaa55有效。ebr分割槽表的第一項表明當前邏輯分割槽的偏移位址,第二項表明下乙個邏輯分析ebr的開始位置。邏輯分割槽的管理類似於資料結...

strtok函式簡析

官方的strtok函式,用來通過分隔字元 不支援字串,傳入的串中每個字元單獨當分隔符,如下例子組合的如123會處理1而23會被跳過 返回分隔的串的首位址 比如呼叫strtok abc123def 123456 返回值是指向abc的指標 下次要獲得 def 需要呼叫strtok null,123456...

IP tcp udp 概念 簡析

ip層接收由更低層 網路介面層例如 乙太網裝置驅動程式 發來的資料報,並把該資料報傳送到更高層 tcp或udp層 相反,ip層也把從tcp或udp層接收來的資料報傳送到更低層。ip資料報是不可靠的,因為ip並沒有做任何事情來確認資料報是按順序傳送的或者沒有被破壞。ip資料報中含有傳送它的主機的位址 ...