簡體   English   中英

如何使用indexOf()檢查數組中的字符串是否部分匹配另一個數組中的字符串?

[英]How can I use indexOf() to check if a string in my array partially matches a string in another array?

我有一個過濾特定項目表的功能。 在我的應用程序中,我有許多具有不同過濾器的表,因此我編寫了一個函數,可以用動態數據過濾表。 一些過濾器使用輸入,用戶必須在其中輸入查詢。 如果用戶查詢僅部分匹配表數組之一中的字符串,則表不會返回預期結果。

例如

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

在此處輸入圖片說明

您要為某些字段值包含某些 filterArray值的行過濾 TableFilter數組。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM