Javascript 无法筛选筛选器中的字
我尝试过使用toLowerCase方法过滤单词,并尝试过过滤域名。但我得到的是空数组。我使用toLowerCase方法来转换数据是否有大写字母或用户是否按大写字母搜索。 下面是我的代码Javascript 无法筛选筛选器中的字,javascript,arrays,Javascript,Arrays,我尝试过使用toLowerCase方法过滤单词,并尝试过过滤域名。但我得到的是空数组。我使用toLowerCase方法来转换数据是否有大写字母或用户是否按大写字母搜索。 下面是我的代码 var数据=[{ “名称”:“测试”, “域”:“域2”, “子域”:“子域5”, “类型”:“是” }, { “名称”:“测试”, “域”:“域2”, “子域”:“子域6”, “类型”:“否” }, { “姓名”:“你好”, “域”:“域2”, “子域”:“子域6”, “类型”:“否” }, { “姓名”:“
var数据=[{
“名称”:“测试”,
“域”:“域2”,
“子域”:“子域5”,
“类型”:“是”
},
{
“名称”:“测试”,
“域”:“域2”,
“子域”:“子域6”,
“类型”:“否”
},
{
“姓名”:“你好”,
“域”:“域2”,
“子域”:“子域6”,
“类型”:“否”
},
{
“姓名”:“你好”,
“域”:“域2”,
“子域”:“子域6”,
“类型”:“否”,
“描述”:“你好”
},
{
“姓名”:“你好”,
“域”:“域5”,
“子域”:“子域6”,
“类型”:“否”,
“描述”:“你好”
}
];
var namesearch=[“他”];
变量域=[“域5”、“域2”];
var结果=数据过滤器((d)=>{
返回(namesearch.length>0?namesearch[0].toLowerCase().indexOf(d.name.toLowerCase())>-1:“”)和&domain.length>0?域。包括(d.domain):“”
});
log(JSON.stringify(result))代码>indexOf调用的方式是错误的。尝试此d.name.toLowerCase().indexOf(名称搜索[0].toLowerCase())
var数据=[
{
名称:“测试”,
域名:“域名1”,
子域:“子域1”,
类型:“是”
},
{
姓名:“你好”,
域名:“域名2”,
子域:“子域6”,
类型:“否”
},
{
名称:“test1”,
域名:“域名2”,
子域:“子域6”,
键入:“否”,
描述:“你好”
}
];
var namesearch=[“他”];
变量域=[“域5”、“域2”];
var result=data.filter(d=>{
返回(namesearch.length>0
?d.name.toLowerCase().indexOf(名称搜索[0].toLowerCase())>-1
:“”)和&domain.length>0
?域。包括(d域)
: "";
});
console.log(result)
我发现您使用了太多的三元表达式,而我没有看到实用程序,
我更喜欢在对namesearch.length进行过滤测试之前,因为如果length为0,则无需输入过滤块
var data = [ {
"name": "test",
"domain": "domain2",
"subdomain": "subdomain5",
"type": "yes"
},
{
"name": "test",
"domain": "domain2",
"subdomain": "subdomain6",
"type": "no"
},
{
"name": "hello",
"domain": "domain2",
"subdomain": "subdomain6",
"type": "no"
},
{
"name": "hello",
"domain": "domain2",
"subdomain": "subdomain6",
"type": "no",
"desc":"hello"
},
{
"name": "hello",
"domain": "domain5",
"subdomain": "subdomain6",
"type": "no",
"desc":"hello"
}
];
var namesearch = ["he"];
var domain = ["domain5","domain2"];
if (namesearch.length > 0) {
var result = data.filter((d)=>{
return ( d.name.toLowerCase().indexOf(namesearch[0].toLowerCase()) > -1) && domain.length > 0 && domain.includes(d.domain)
});
console.log(JSON.stringify(result));
}
namesearch是可选的,有时我们只需要在过滤器内部使用。域也是可选的