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之间的数据

posted @ 2018-12-27 16:15  明年上初中  阅读(77)  评论(0编辑  收藏  举报