业务:
![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624893887543-8f7ab80c-850d-4e3c-97d0-9e616feed75c.png#clientId=u97fe44e9-faea-4&from=paste&height=337&id=u60c35b23&margin=%5Bobject%20Object%5D&name=image.png&originHeight=337&originWidth=464&originalType=binary&ratio=1&size=21514&status=done&style=none&taskId=u9cc9686c-d0e9-4295-959b-c582c4ed72b&width=464)
最终实现的效果:
![image.png](https://cdn.nlark.com/yuque/0/2021/png/21762447/1624893920404-0c549211-c2a1-4e68-b752-6b135cfcae1d.png#clientId=u97fe44e9-faea-4&from=paste&height=90&id=u65787275&margin=%5Bobject%20Object%5D&name=image.png&originHeight=90&originWidth=307&originalType=binary&ratio=1&size=6303&status=done&style=none&taskId=ud936da32-ee5a-49fb-9388-9210684484b&width=307)
代码演示:
/*
total : 总条数
size : 每页几条
page : 当前第几页
btnCount : 最多能看到几个按钮
*/
function f(total,size,page,btnCount){
const arr = []
// 总共几页
const pageNum =Math.ceil(total/size)
if(page>pageNum) page = pageNum
if(page<=0) page=1
// 当前页数小于按钮数量一半 =》 [1,2,page,4,btnCount] 排序
if(page<=Math.ceil(btnCount/2)){
for(var i=1;i<=btnCount;i++){
arr.push(i)
}
return arr
}
// 当前页数 大于 总页数减去按钮数量一半 =》 [pageNum-btnCount, , page , ,pageNum] 排序
else if(page>=pageNum-Math.floor(btnCount/2)){
for(var i=pageNum;i>pageNum-btnCount;i--){
arr.push(i)
}
return arr.reverse()
}
// 其他情况 [page-Math.floor(btnCount/2) , , page, , , page+Math.ceil(btnCount/2) ] 排序
else{
for(var i=page-Math.floor(btnCount/2) ; i<page+Math.ceil(btnCount/2);i++){
arr.push(i)
}
return arr
}
}
console.log(f(200,10,10,5))