分页

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,
    }
  }
上一篇 下一篇

猜你喜欢

热点阅读