通过JavaScript实现分页及搜索查询

          // 通过url获取参数
          let url = context.ctx.request.originalUrl;
          // 解析url中的汉字
          url = decodeURI(url);
          let select = {};
          // 将搜索条件转为一个对象
          if (url.indexOf('?') != -1) {
            let arr = url.slice(url.indexOf('?') + 1).split('&');
            arr.forEach(item => {
              let param = item.split('=');
              select[param[0]] = param[1];
            });
          }
          
          //准备进行分类筛选 select:筛选条件   arr:数据源
          const deduplicationAfter = (select, arr) => {
            //  去掉pageNum和pageSize作为筛选条件
            let selectKey = Object.keys(select);
            if (selectKey.includes('pageNum')) {
              selectKey.splice(selectKey.indexOf('pageNum'), 1);
            }
            if (selectKey.includes('pageSize')) {
              selectKey.splice(selectKey.indexOf('pageSize'), 1);
            }
            // 判断去掉pageNum和pageSize后是否有其他搜索条件
            if (selectKey.length > 0) {
              let newArray = selectKey.reduce((pre, cur) => {
                return pre.filter(item => {
                  return select[cur] == item[cur];
                });
              }, arr);
              
              // 判断过滤后的结果是否为空
              if (
                // typeof select.pageNum !== '' ||
                // typeof select.pageSize !== '' ||
                newArray.length === 0 ||
                newArray.length < (select.pageNum - 1) * select.pageSize ||
                select.pageNum * 1 < 0 ||
                select.pageSize * 1 < 0
              ) {
                return '暂无数据';
              }
              return newArray;
            } else {
            // 如果筛选出来的数据不足一页 就直接return
              if (arr.length < select.pageSize * 1) {
                return arr;
              }
              // 如果筛选出来的数据大于页码 就开始进行分页处理
              if (arr.length > select.pageSize * 1) {
                return arr.splice((select.pageNum  - 1) * select.pageSize, select.pageSize * 1);
              }
              return arr;
            }
          };
        
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值