Java集合按照索引分页,以及JS数组代码按照索引分页的源码
记得有一次写一个需求,一时脑热写了个按照索引分页,至于是为什么写,已经忘了
首先是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之间的数据