あなたの質問が、あなたのために検索を行う組み込みのものがあるかどうかである場合、いいえ、ありません。基本的に、String#indexOfまたは正規表現を使用して配列をループし、文字列をテストします。
ループには、少なくとも 3 つの選択肢があります。
退屈な古いforループ。
ES5 対応環境 (または shim を使用) では、Array#filter.
jQuery を使用しているため、jQuery.map.
退屈な古いforループの例:
function search(source, name) {
var results = [];
var index;
var entry;
name = name.toUpperCase();
for (index = 0; index < source.length; ++index) {
entry = source[index];
if (entry && entry.name && entry.name.toUpperCase().indexOf(name) !== -1) {
results.push(entry);
}
}
return results;
}
as でそれを呼び出し、目的の名前フラグメントをobj.listasで呼び出す場所。sourcename
または、空白のエントリまたは名前のないエントリがある可能性がある場合は、次のように変更ifします。
if (entry && entry.name && entry.name.toUpperCase().indexOf(name) !== -1) {
Array#filter例:
function search(source, name) {
var results;
name = name.toUpperCase();
results = source.filter(function(entry) {
return entry.name.toUpperCase().indexOf(name) !== -1;
});
return results;
}
また、空白のエントリがある可能性がある場合 (たとえば、undefined不足ではなく、不足しているfilterエントリをスキップします)、内部の戻り値を次のように変更します。
return entry && entry.name && entry.name.toUpperCase().indexOf(name) !== -1;
jQuery.map例 (ここでは、通常はjQuery=を想定しています。使用している場合はに変更します):$$jQuerynoConflict
function search(source, name) {
var results;
name = name.toUpperCase();
results = $.map(source, function(entry) {
var match = entry.name.toUpperCase().indexOf(name) !== -1;
return match ? entry : null;
});
return results;
}
(また、必要に応じてそこに追加entry && entry.name &&します。)