1

JQuery オートコンプリートの配列内の正規表現の検索が正しく機能しません。

私は配列を持っています:

var names = [ "Jorn Zaefferer", "Scott Gonzalez", "John Resig" ];

JQuery のオートコンプリート機能は次のとおりです。

$( "#developer" ).autocomplete({
  source: function( request, response ) {
    var matcher = new RegExp('^'+request.term,'g');
    var arr=new Array();
            for(var i=0;i<names.length;i++)
    {
        var index=0;

        if(matcher.test(names[i])===true)              //not returning true
        {
            console.log("it is true");
            arr.push(names[i]);
        }
        else
        {
            console.log("not done");
        }
    }
    response(arr);
  }
});

条件文:

if(matcher.test(names[i])===true)

コードでtrueを返していません。なんで?

4

2 に答える 2

1

正規表現のフラグを削除する必要がありgます。これにより、正規表現オブジェクトにある検索から次の検索までの状態が残り、混乱する可能性があります。正規表現の特定の使用に理由はないはずです。

次に、さらに支援が必要な場合は、true を返さない配列で正確に何を検索しているかを示す必要があるでしょう。

一致を取得し始めたときに、すべての一致を累積しようとしている場合は、arr変数の初期化をループの前に移動してfor、ループの反復ごとに再初期化されないようにする必要がありforます。

于 2013-08-28T22:01:23.877 に答える
0

の内容をログに記録するかデバッグrequest.termすると、あなた (そして私たち! :-)) にとってより明確になります。

var arr=new Array();また、の前に移動する必要があると思いますforvar index=0;削除できます。

于 2013-08-28T22:01:27.970 に答える