Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法筛选筛选器中的字_Javascript_Arrays - Fatal编程技术网

Javascript 无法筛选筛选器中的字

Javascript 无法筛选筛选器中的字,javascript,arrays,Javascript,Arrays,我尝试过使用toLowerCase方法过滤单词,并尝试过过滤域名。但我得到的是空数组。我使用toLowerCase方法来转换数据是否有大写字母或用户是否按大写字母搜索。 下面是我的代码 var数据=[{ “名称”:“测试”, “域”:“域2”, “子域”:“子域5”, “类型”:“是” }, { “名称”:“测试”, “域”:“域2”, “子域”:“子域6”, “类型”:“否” }, { “姓名”:“你好”, “域”:“域2”, “子域”:“子域6”, “类型”:“否” }, { “姓名”:“

我尝试过使用toLowerCase方法过滤单词,并尝试过过滤域名。但我得到的是空数组。我使用toLowerCase方法来转换数据是否有大写字母或用户是否按大写字母搜索。 下面是我的代码

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是可选的,有时我们只需要在过滤器内部使用。域也是可选的