• 使用javascript slice函数实现模拟分页


    在前端中有时需要自己写mock api, 数据库方面并不一定要用mysql这样的,用json文件同样也可以模拟数据库,使用require函数读取json文件获取到一个json对象/数组,下面介绍怎么使用slice函数进行模拟分页:

    分页时只需要这几个参数: 

    baseData: 待分页的数据(通常是一个数组,因为mysql的表就是线性的数据,本质就是数组)

    当前页码:pageNum

    每页显示条数:pageSize

    那么分页的核心代码如下

    1. // 计算总页数
    2. const totalPages = Math.ceil(baseData.length / pageSize);
    3. // 计算起始索引和结束索引
    4. const startIndex = (pageNumber - 1) * pageSize;
    5. const endIndex = Math.min(startIndex + pageSize, baseData.length);
    6. // 使用 slice 方法截取分页需要返回的数据
    7. queryPageInfo = baseData.slice(startIndex, endIndex);
    8. // 计算上一页和下一页
    9. const prevPage = pageNumber > 1 ? pageNumber - 1 : null;
    10. const nextPage = pageNumber < totalPages ? pageNumber + 1 : null;

    简单解释一下slice函数的用法:

    slice(start,end)==>表示截取数组: 起始索引:start, 结束索引:(end-1),这两段之间的数据

    之所以还需要计算prevPage(上一页)和nextPage(下一页), 是因为需要发给前端做分页按钮时的分页信息:

      paginationInfo = {

        prevPageLink,

        nextPageLink,

        totalCount: baseData.length,

        pageSize,

        currentPage: pageNumber,

        totalPages,

      };

    而计算prePageLink和nextPageLink 就需要prevPage和nextPage这两个参数

      const prePageLink = prevPage

        ? `${baseUrl}?pageNumber=${prevPage}&pageSize=${pageSize}`

        : null;

      const nextPageLink = nextPage

        ? `${baseUrl}?pageNumber=${nextPage}&pageSize=${pageSize}`

        : null;

     这个分页信息可以设置到response的header中,然后web端通过request读取header获取分页信息:

    res.header("x-pagination", JSON.stringify(paginationInfo))

  • 相关阅读:
    linux基础
    C语言编译与链接过程详解
    【Servlet】第一个 Servlet 项目
    【bootstrap】bootstrap布局范例--20220917
    无涯教程-JavaScript - SUMX2PY2函数
    《深入理解Spark RDD缓存机制》(第4天)
    四)Stable Diffussion使用教程:图生图
    Day02-IDEA使用方式&基本语法
    深度学习中的偏差、方差、正则化
    如何编辑图片合成图片?让我们来看看这些合成方法
  • 原文地址:https://blog.csdn.net/jiaohuizhuang6019/article/details/133245089