2017-04-24 13 views
0

Javascript & jQueryについての知識は非常に限られていますが、私はそれが欲しいところで私のオートコンプリート関数を得るためにいくつかの助けを借りて管理しました。Javascriptオートコンプリート分割関数を別の関数内に追加する

私のオートコンプリートの結果を、必要な長さに制限したいと思います。

source: function(request, response) { 
    var results = $.ui.autocomplete.filter(airports, request.term); 
    response(results.slice(0, 10)); 
} 

が、私の「ソース」すでに用語の&キーの私の配列内の特定の値を検索する機能を使用しています:

function airportArray(request, response) { 
    var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
    response($.grep(airports, function(value) { 
     return matcher.test(value.iata) || matcher.test(value.city) || matcher.test(value.airport); 
    })); 
} 

がどのように操作を行い、私は結果を制限するために、次のコードを知っています私の既にコード化された関数にフィルタを追加しますか?

JSFIDDLE:https://jsfiddle.net/cgaybba/17p7uyvf/

私は多くのバリエーションを試してみたが、私が言ったように、私の知識が正常に二つの機能を組み合わせることが限られています。

ご協力いただければ幸いです。

答えて

0

あなたは単にあなたがちょうど$.grepから返された配列にスライス機能を追加することができ、最大10の項目についての結果をフィルタリングするために探している場合:

response(
    $.grep(airports, function(value) { 
     return matcher.test(value.iata) || 
       matcher.test(value.city) || 
       matcher.test(value.airport); 
     }) 
    .slice(0, 10) 
); 
0

これを試してみてください:

var cur = 0; 
    var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i"); 
    response(
     $.grep(airports, function(value) { 
      var result = matcher.test(value.iata) || matcher.test(value.city) || matcher.test(value.airport);   
      if (cur >= 10 && result == true) { result = false; } else { cur = cur + 1; } 
      return result; 
     }) 
    ); 

あなたはすでにほとんどそこにいました。

関連する問題