每日 一 小作业 // 分页数组

 // 创建分页组件需要的 按钮数组

        // btnCount: 最多能看到几个按钮

        // total: 总条数

        // size: 每页几条

        // page: 当前第几页

        function f(total, size, page, btnCount) {

            if (Math.ceil(total / size) < page) {

                return 'page超过页码最大值'

            }

            if (Math.ceil(total / size) < btnCount) {

                return 'btnCount超过最大值'

            }

            var arr = [] // 能看到的页码集合

            for (var i = 1; i <= btnCount; i++) {

                if (btnCount === 1) {

                    arr = [page]

                } else if (btnCount === 2) {

                    arr = [page, page + 1]

                } else if (btnCount > 2 && btnCount % 2 === 1) {

                    var a1 = [page - (btnCount - 1) / 2]

                    var a2 = [page + 1]

                    for (var j = 2; j <= (btnCount - 1) / 2; j++) {

                        a1.push((page - (btnCount - 1) / 2) + j - 1)

                        a2.push(page + j)

                    }

                    arr = [...a1, page, ...a2]

                    if (arr[0] <= 0) {

                        var n = 1

                        arr.forEach((item, index) => {

                            arr[index] = n++

                        })

                    }

                      if(arr[arr.length-1]>max){

                        let last = max

                        let newArr =[max]

                        for(let f =1;f<arr.length;f++){

                            newArr.unshift(--last)

                        }

                        arr = newArr

                    }

                } else if (btnCount > 2 && btnCount % 2 === 0) {

                    var b1 = [page - (btnCount / 2) + 1]

                    var b2 = [page + 1]

                    for (var k = 2; k <= btnCount / 2; k++) {

                        b1.push(page - btnCount / 2 + k)

                        b2.push(page + k)

                    }

                    b1.pop()

                    arr = [...b1, page, ...b2]

                    if (arr[0] <= 0) {

                        var m = 1

                        arr.forEach((item, index) => {

                            arr[index] = m++

                        })

                    }

                     if(arr[arr.length-1]>max){

                        let last = max

                        let newArr =[last]

                        for(let g =1;g<arr.length;g++){

                            newArr.unshift(--last)

                        }

                        arr = newArr

                    }

                }

            }

            return arr

        }

        console.log(f(100, 10, 1, 6));   // [1, 2, 3, 4, 5, 6]

        console.log(f(100, 10, 7, 6));   // [5, 6, 7, 8, 9, 10]

        console.log(f(100, 10, 2, 6));  // [1, 2, 3, 4, 5, 6]

        console.log(f(100, 10, 5, 6));   // [3, 4, 5, 6, 7, 8]

        console.log('------------');

        console.log(f(100, 10, 1, 5));   // [1, 2, 3, 4, 5]

        console.log(f(100, 10, 7, 5));    // [5, 6, 7, 8, 9]

        console.log(f(100, 10, 2, 5));   // [1, 2, 3, 4, 5]

        console.log(f(100, 10, 5, 5));   //[3, 4, 5, 6, 7]

        console.log('------------');

        console.log(f(100, 10, 1, 4));   // [1, 2, 3, 4]

        console.log(f(100, 10, 7, 4));   // [6, 7, 8, 9]

        console.log(f(100, 10, 2, 4));   // [1, 2, 3, 4]

        console.log(f(100, 10, 5, 4));   // [4, 5, 6, 7]

        console.log('------------');

        console.log(f(100, 10, 1, 7));   // [1, 2, 3, 4, 5, 6, 7]

        console.log(f(100, 10, 7, 7));   // [4, 5, 6, 7, 8, 9, 10]

        console.log(f(100, 10, 2, 7));   // [1, 2, 3, 4, 5, 6, 7]

        console.log(f(100, 10, 5, 7));   //  [2, 3, 4, 5, 6, 7, 8]

 console.log('+++++++++++++++++++++++');

       

 console.log(f(50,5,10,5));       // [6, 7, 8, 9, 10]

        console.log(f(50,5,10,6));    // [5, 6, 7, 8, 9, 10]

        console.log(f(50,5,10,7));    // [4, 5, 6, 7, 8, 9, 10]

        console.log(f(50,5,10,8));    // [3, 4, 5, 6, 7, 8, 9, 10]

おすすめ

転載: blog.csdn.net/weixin_58726419/article/details/120929226