分页
2023-07-06 本文已影响0人
xueyueshuai
function getPageNumList(totalPageCount, showBtnCount, currentPageNum) {
showBtnCount = Math.min(totalPageCount, showBtnCount)
currentPageNum = Math.min(totalPageCount, currentPageNum)
let leftCount = 0;
let rightCount = 0;
if (showBtnCount % 2 == 0) {
leftCount = showBtnCount / 2;
} else {
leftCount = (showBtnCount - 1) / 2;
}
rightCount = showBtnCount - leftCount - 1
let btnNumArr = [currentPageNum]
for (let i = 1; i <= leftCount; i++) {
btnNumArr.unshift(currentPageNum - i)
}
for (let i = 1; i <= rightCount; i++) {
btnNumArr.push(currentPageNum + i)
}
btnNumArr = btnNumArr.filter(v => {
return v >= 1 && v <= totalPageCount;
})
let nowLeftCount = btnNumArr.filter(v => v < currentPageNum).length
let nowRightCount = btnNumArr.filter(v => v > currentPageNum).length
if (nowLeftCount < leftCount) {
let lastNum = btnNumArr[btnNumArr.length - 1]
for (let i = 1; i <= leftCount - nowLeftCount; i++) {
btnNumArr.push(lastNum + i)
}
}
if (nowRightCount < rightCount) {
let firstNum = btnNumArr[0]
for (let i = 1; i <= rightCount - nowRightCount; i++) {
btnNumArr.unshift(firstNum - 1)
}
}
return {
totalPageCount,
showBtnCount,
currentPageNum,
btnNumArr,
}
}