在项目开发的过程中,遇到分页的第一页就展示大量的数据,导致前端列表加载展示的速度慢,所以需要在本地加入分页处理,把所有数据先放到内存里,下面我用Python演示如何实现本地分页的算法(针对二级数据结构)
initialSize = 2 # 首屏展示条数
eachSize = 5 # 剩余页展示条数
local_pages = [] # 本地分页数据
def makePage(d):
'''
制作分页数据
'''
local_pages.clear()
if calcSize(d) > initialSize: # 总条数大于首屏数,使用本地分页
sublist = []
for item in d:
for child in item["child"]:
sublist.append(child)
firstPageSize = min(len(sublist), initialSize) # 第一页的大小
local_pages.append(sublist[0:firstPageSize]) # 取第一页的集合
remain_size = len(sublist)-firstPageSize # 剩余条数
group_count = int(remain_size / eachSize) # 计算分页数
last_count = remain_size % eachSize # 取余,最后剩余多少条
idx = 0
for idx in range(group_count):
start = firstPageSize + idx * eachSize
end = start + eachSize
local_pages.append(sublist[start:end]) # 新增页集合
if last_count > 0:
local_pages.append(sublist[-last_count:]) # 余数不为0,将作为最后一页集合
pass
def calcSize(d)->int:
'''
计算总条数
'''
s