我已将一个输入值存储在名为var value=$("#globalSearch").val().trim();
的变量中。
jsonData
我有一个名为0:{name:"xxxx",age:"20",gender:"male"};
1:{name:"yyy",age:"22",gender:"female"};
2:{name:"zzz",age:"20",gender:"female"}
的对象。
name
现在我只根据 var Data={};
var value=$("#globalSearch").val().trim();
$.each(jsonData,function(i,d){
debugger;
if(value && d.value.toLowerCase().indexOf(value.toLowerCase())==-1)
{
return;
}
if(!Data[d.age])
{
Data[d.age]=[];
}
Data[d.age].push(d);
});
return Data
过滤数据并且工作正常。
age and gender also
现在我的问题是,当我输入输入时,它只会检查名称,但我想检查if(value && d.value&&age&&gender.toLowerCase().indexOf(value.toLowerCase())==-1)
。怎么做?
我试过这个
$in
它无法正常工作。请给我任何想法。
答案 0 :(得分:1)
您可以使用Array.prototype.filter()。由于您需要检查所有3个过滤器,您可以
最后你会得到一个数组,其中元素通过所有3个过滤器
答案 1 :(得分:1)
&&
是一个逻辑运算符。你需要连接才能发生。
我建议在元素数组上使用join
来执行该连接:
if(value &&
[d.value, d.age, d.gender].join('|').toLowerCase().indexOf(value.toLowerCase())==-1)
如果您有ES6支持,则可以执行以下操作:
if(value &&
!Object.values(d).join('|').toLowerCase().includes(value.toLowerCase()))
...它将只连接d
对象中的所有可用值。