javascript - 如何使用 indexOf() 检查我的数组中的字符串是否部分匹配另一个数组中的字符串?
问题描述
我有一个功能可以过滤特定项目的表格。在我的应用程序中,我有许多带有不同过滤器的表,因此我编写了一个可以使用动态数据过滤表的函数。一些过滤器使用用户必须输入查询的输入。如果用户的查询仅部分匹配表数组之一中的字符串,则该表不会返回预期结果。
例如
filterArr = [null, null, "246", null]
TableFilter = [
{"name": Matthew Shapiro", "claim_number":"2469135-6", "type": "Medical", "date": "05/04/2018", "doctor": "John Smith", "hospital": "University Hospital"},
{"name": "John Connor", "claim_number": "1352460-2", "type": "Medical", "date": "01/01/2018", "doctor": "John Smith", "hospital": "University Hospital"},
{"name": "Sam Heist", "claim_number": "1270120-9", "type": "Medical", "date": "02/11/2018", "doctor": "William Rodgers", "hospital": "Springfield Hospital"}
]
在此示例中,即使在“2469135-6”和“1352460-2”中可以找到 246,该表也不会返回前两行。如果我将过滤器中的查询更新为任一数字的完整字符串,它会。
如果 filterArr 中的字符串部分匹配 TableFilter[i] 中的字符串,我如何更新我的函数以返回适当的 TableFilters?
下面是我的函数以及我的一张表的屏幕截图。
let rowArr = []
let filteredResults = []
this.rows.map(element => {
rowArr = Object.values(element); // Object.values of each row
rowArr.filter(e => {
if (rowArr.indexOf(filterArr) !== -1) {
// check for substring match. Currently not working
console.log('match');
}
if (filterArr.includes(e)) { // check if filter has value that matches row
filteredResults.push(element);
this.rows = filteredResults;
}
})
})
解决方案
您想要过滤TableFilter 数组中某些字段值包含某些filterArray 值的行。
var filterArr = [null, null, "246", null];
var TableFilter = [
{"name": "Matthew Shapiro", "claim_number":"2469135-6", "type": "Medical", "date": "05/04/2018", "doctor": "John Smith", "hospital": "University Hospital"},
{"name": "John Connor", "claim_number": "1352460-2", "type": "Medical", "date": "01/01/2018", "doctor": "John Smith", "hospital": "University Hospital"},
{"name": "Sam Heist", "claim_number": "1270120-9", "type": "Medical", "date": "02/11/2018", "doctor": "William Rodgers", "hospital": "Springfield Hospital"}
];
var foundResults = TableFilter.filter(row => {
return Object.keys(row).some(fieldName => {
return filterArr.some(filt => {
return row[fieldName].indexOf(filt) > -1;
});
});
});
console.log(foundResults);
推荐阅读
- java - 如何使用分隔符并在我的文本文件中创建所有注释的输出
- javascript - 对象字面量中的静态成员
- android - 加载带有数据的 jbitmap
- javascript - 使用按钮触发 Apache Velocity #set 参数 (HTML / JS)
- javascript - 在 .then() 中向函数添加参数会破坏 JS 中 Promise 的行为
- javascript - Vue:在触发 setInterval 时选择一个选项
- javascript - 更新传递给其他组件的组件数组中使用的道具
- excel - 我想将大量数据从一个excel文件导入到另一个从第3行到最后一行-1
- javascript - 映射数组返回逗号
- javascript - 如何在另一个函数的函数中使用一个函数