首页 > 解决方案 > 无法过滤过滤器内的单词

问题描述

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

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"];
var result = data.filter((d)=>{
return (namesearch.length > 0 ? namesearch[0].toLowerCase().indexOf(d.name.toLowerCase()) > -1:'') &&  domain.length > 0 ? domain.includes(d.domain):''
});
console.log(JSON.stringify(result));

标签: javascriptarrays

解决方案


indexOf 调用的方式是错误的。试试这个d.name.toLowerCase().indexOf(namesearch[0].toLowerCase())

var data = [
  {
    name: "test",
    domain: "domain1",
    subdomain: "subdomain1",
    type: "yes"
  },
  {
    name: "hello",
    domain: "domain2",
    subdomain: "subdomain6",
    type: "no"
  },
  {
    name: "test1",
    domain: "domain2",
    subdomain: "subdomain6",
    type: "no",
    desc: "helloo"
  }
];

var namesearch = ["he"];
var domain = ["domain5", "domain2"];
var result = data.filter(d => {
  return (namesearch.length > 0
    ? d.name.toLowerCase().indexOf(namesearch[0].toLowerCase()) > -1
    : "") && domain.length > 0
    ? domain.includes(d.domain)
    : "";
});

console.log(result)


推荐阅读