単純な文字列配列ではなくオブジェクトで同じ問題に直面し、結果を取得した後に並べ替えを行う必要があります (リストの上部にある「startswith」の提案を実現するため)。将来の検索者のために、私のソリューションを追加します。
JQuery を使用すると、ユーザー入力で始まる結果オブジェクトの .label 内の文字列を検索し、残りの結果をそれらにマージできます。マージ後、Underscore.js ライブラリを使用して重複を削除します。
例えば:
var objects_array = [{"label":"A_ABC","value":"0"},{"label":"B_ABC","value":"1"},{"label":"C_ABC","value":"2"}];
$(document).ready ( function() {
$('#search').autocomplete({
source: function (request, response) {
var results = $.ui.autocomplete.filter(objects_array, request.term);
var top_suggestions = $.grep(results, function (n,i) {
return (n.label.substr(0, request.term.length).toLowerCase() == request.term.toLowerCase());
});
var merged_results = $.merge(top_suggestions,results);
var final_results = _.uniq(merged_results,"label");
response(final_results);
}
});
});

結果の例: http://i.stack.imgur.com/GKJ8d.png