// 创建分页组件需要的 按钮数组
// 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]