请教一下前端查询问题?

公司需要我用静态数据写个查询页面给人展示一下,我现在的问题是单个条件查询没问题,如果我第一个输入正确,第二个输入错误应该查询不出来,还有多个条件这个怎么实现

                let msg = $.trim($('.searchText').val());
                let qwe = $.trim($('.search_one').val());
                let asd = $.trim($('.search_two').val());
                let erType=$.trim($("#yichang option:selected").val());
                let searchTarget = [];
                arr1.map(e=>{

                    if(e.batteryCode == msg | e.battreyV == qwe | e.circleLine == asd |  e.batteryType == erType){
                        searchTarget.push(e)
                    }
                }) 

clipboard.png

阅读 2.7k
5 个回答

看你的代码里,应该是要进行精确匹配,而不是模糊匹配,多个条件时,应当是关系,而不是关系吧!

let msg = $.trim($('.searchText').val());
let qwe = $.trim($('.search_one').val());
let asd = $.trim($('.search_two').val());
let erType=$.trim($("#yichang option:selected").val());
let searchTarget = [];

let judgeMent = {};
if(msg){
    judgeMent['batteryCode'] = msg;
}
if(qwe){
    judgeMent['battreyV'] = qwe;
}
if(asd){
    judgeMent['circleLine'] = asd;
}
if(erType){
    judgeMent['batteryType'] = erType;
}

arr1.map(e=>{
    let flag = true; // 默认当前项匹配
    for(let key in judgeMent){
        if( e[key]!==judgeMent[key] ){ // 当前项不匹配
            flag = false;
            return;
        }
    }
    if(flag){
        searchTarget.push(e);
    }
}) 

and和or了解一下

return arr1.filter(e => (e.batteryCode.includes(msg) || e.battreyV.includes(qwe) || e.circleLine.includes(asd) ||  e.batteryType.includes(erType)))

首先确定需求,是求并集还是合集?比如有条件A、B、C, 你的查询结果是要同时满足这三个条件?还是只要满足其中一个条件?
三者都满足,就是A && B && C,如果只要满足其中一个条件,先查A,满足A的收集起来,不满足A,查是否满足B,满足,同样收集,不满足B,就查是否满足C,满足C也收集起来,就是 A || B || C,至于A、B、C的先后顺序是人为决定的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题