javascript - 无法过滤过滤器内的单词
问题描述
我尝试使用 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));
解决方案
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)
推荐阅读
- r - R Shiny:选择中的数据框不会出现在主面板中
- jupyter-lab - 如何在 JupyterLab 中获取对 CodeMirror 实例的引用?
- paraview - 与定义两组 cell_data 相关的 Paraview 错误
- javascript - 我正在尝试将本地服务器上的图像显示到 Web 浏览器,但它不起作用
- relational-database - 识别关系和非识别关系之间的区别
- user-interface - 实现双端滑动窗口 UI
- angular - 忽略代码“return defer”的可观察函数
- postgresql - 如何将 Postgres 日期时间格式化为月日、年 - 星期几
- c# - 在 DataGrid 和 ListView 之间切换
- sql - 存储过程中 IN 关键字的 SQL 问题