簡體   English   中英

如何動態檢查字符串是否包含多個子字符串匹配?

[英]How to dynamically check if a string contain more than one substring match?

我正在嘗試構建一個搜索建議,返回下面的最佳匹配是我的代碼和注釋

    /*
    string = {"Canna Terra PLUS 50 Litres", "Canna Vega Tent", "Canna Bio Vega", "Super Canna 50 max" }
    search = "Canna Vega"  this can be dynamic ranging up to 4 words search term

    The expected return array would be

    {"Canna Vega Tent", "Canna Bio Vega" }

    */

    function loadSuggest(string,search){

        if( search.length < 3 ){ 
            return; // suggest is loaded only if the search term is more than 3 letter
        }

        var terms = search.split(' '); // split the search term with spaces
        var i;

        for(i = 0; i < string.length; i++){

            /*
            how to dynamically check and return
            the results containing more than one term match ?
            I have tried indexOf() but that fails with dynamic number of words matching
            */

        }
        return resultArray;
    }

我在代碼注釋中提到,我試圖與包含搜索詞中所有單詞的字符串進行最佳匹配。

試試這個 - 使用Array.prototype.every來檢查是否所有搜索詞都存在並使用Array.prototype.filter過濾掉

演示如下:

 var string = ["Canna Terra PLUS 50 Litres", "Canna Vega Tent","Canna Bio Vega", "Super Canna 50 max"]; function loadSuggest(string, search) { var terms = search.split(' '); return string.filter(function(element) { return terms.every(function(e) { return element.toLowerCase().indexOf(e.toLowerCase()) !== -1; }); }); } console.log(loadSuggest(string, "Canna vega")); 

暫無
暫無

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

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