2016-11-06 64 views
0

我使用此代碼獲取與特定關鍵字匹配的項目。在javascript中使用過濾器時獲取項目索引

var match_data = function(search_str, items) { 
    var reg = new RegExp(search_str.split('').join('\\w*').replace(/\W/, ""), 'i'); 
    return items.filter(function(item_data) { 
     if (item_data.match(reg)) { 
      return item_data; 
     } 
    }); 
}; 

有什麼辦法可以得到匹配項目的索引嗎?

而且我不斷收到這樣的警告時,我的搜索字符串在它comtains \任何地方:

Uncaught SyntaxError: Invalid regular expression: /iw*m\w*\/: \ at end of pattern(…)

你們可以請幫我解決這個錯誤也是如此。

在此先感謝。

+1

請添加一些數據和想要的結果。 –

+0

過濾器期望一個布爾值,而不是項目的值,如果它應該插入到結果集中。 –

+0

關於索引:可以使用'indexOf(val)'函數從數組中獲取值的索引。 – rakaz

回答

2

您可以使用另一個數組和來自Array#filter的回調API的索引。

var match_data = function(search_str, items) { 
     var reg = new RegExp(search_str.split('').join('\\w*').replace(/\W/, ""), 'i'), 
      indices = []; 

     return { 
      result: items.filter(function(item_data, index) { 
       if (item_data.match(reg)) { 
        indices.push(index); 
        return true; 
       } 
      }), 
      indices: indices 
     }; 
    }; 
+0

感謝: )我會試一試,讓你知道 – mrid