记得有一次写一个需求,一时脑热写了个按照索引分页,至于是为什么写,已经忘了
首先是Java的
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class IndexPage {
/**
*
* @Description 索引分页
* @author 1162107757@qq.com何杰
* @date 2018年7月23日
*/
public static List<Object> pageList(List<?> array,Integer page,Integer limit){
// 数组长度
int count = array.size();
// 添加分页的数据
ArrayList<Object> pageList = new ArrayList<>();
// 处理数据不够limit的判断
if(page > count / limit){
if(Double.parseDouble(page.toString()) > new BigDecimal(count).divide(new BigDecimal(limit)).doubleValue()){
// 计算分页
page = (page - 1) * limit;
if(page > array.size()){
return null;
}else{
for (int i = page; i < array.size(); i++) {
Object obj = array.get(i);
pageList.add(obj);
}
return pageList;
}
}
}
// 如果要查询的数据长度大于数据库总数的长度
// 处理总数没有limit大的情况
if(limit > count){
if((page - 1) * limit > count){
return null;
}else{
page = (page - 1) * limit;
for (int i = page; i < array.size(); i++) {
Object obj = array.get(i);
pageList.add(obj);
}
return pageList;
}
}
// 正常数据
// 计算分页
page = (page - 1) * limit;
for (int i = page; i < (page + limit); i++) {
Object obj = array.get(i);
pageList.add(obj);
}
return pageList;
}
}
然后是JS,产品经理上次让做的一个功能,页面选择了数据,但是数据只是逻辑存储,并没有存储到数据库,而且需要实现可以搜索,也可以分页,然后就把Java的代码稍微改了一下
// 按照数组索引分页
// param products 所有数据
// param page 当前页
// param limit 当前页条数
function indexPage(products,page,limit){
// 数组长度
var count = products.length;
// 添加分页的数据
var pageList = new Array();
if(page > count / limit){
if(page > (count * limit)){
// 计算分页
page = (page - 1) * limit;
if(page > products.length){
return null;
}else{
for (var i = page; i < products.length; i++) {
var product = products[i];
pageList.push(product);
}
return pageList;
}
}
}
// 如果要查询的数据长度大于数据库总数的长度
// 处理总数没有limit大的情况
if(limit > count){
if((page - 1) * limit > count){
return null;
}else{
page = (page - 1) * limit;
for (var i = page; i < products.length; i++) {
var product = products[i];
pageList.push(product);
}
return pageList;
}
}
// 正常数据
// 计算分页
page = (page - 1) * limit;
for (var i = page; i < (page + limit); i++) {
var product = products[i];
pageList.push(product);
}
return pageList;
}
page的最小参数请传入1,limit随意,最后返回的就是分页的数据,当然只返回page~limit之间的数据