2016-11-06 4 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

コールバックAPIのインデックスであるArray#filterの別の配列を使用することもできます。

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

関連する問題