gpt4 book ai didi

javascript - 如何使用indexOf()来检查数组中的字符串是否部分匹配另一个数组中的字符串?

转载 作者:行者123 更新时间:2023-12-03 00:38:15 25 4
gpt4 key购买 nike

我有一个函数可以过滤表格中的特定项目。在我的应用程序中,我有许多表,其中许多表具有不同的过滤器,因此我编写了一个可以使用动态数据过滤表的函数。某些过滤器使用用户必须输入查询的输入。如果用户的查询仅部分匹配表数组之一中的字符串,则表不会返回预期结果。

例如

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] 中的字符串部分匹配,如何更新函数以返回适当的 TableFilter?

下面是我的函数以及我的一个表格的屏幕截图。

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;
}
})
})

enter image description here

最佳答案

您想要过滤 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);

关于javascript - 如何使用indexOf()来检查数组中的字符串是否部分匹配另一个数组中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53564845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com