Jeśli masz jakieś pytanie, czy jest jakieś wbudowane urządzenie, które wyszuka ciebie, to nie, nie ma. Zasadniczo przechodzisz przez macierz za pomocą String#indexOf
lub regular expression, aby przetestować ciągi.
Na pętli, masz co najmniej trzy możliwości:
nudny stary for
pętlę.
W środowiskach z obsługą ES5 (lub z podkładką), Array#filter
.
Ponieważ używasz jQuery, jQuery.map
.
Boring stary przykład for
pętla:
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;
}
Jeżeli chcesz zadzwonić, że z obj.list
jako source
i pożądanej nazwy fragmentu jako name
.
Albo czy istnieje jakaś szansa istnieje puste wpisy lub wpisy bez nazwy, zmienić if
do:
if (entry && entry.name && entry.name.toUpperCase().indexOf(name) !== -1) {
Array#filter
przykład:
function search(source, name) {
var results;
name = name.toUpperCase();
results = source.filter(function(entry) {
return entry.name.toUpperCase().indexOf(name) !== -1;
});
return results;
}
i znowu, jeśli jakaś szansa, że są puste wpisów (np. undefined
, w przeciwieństwie do brakujących; filter
pominie brakujących wpisów), zmień wewnętrzny powrót na:
return entry && entry.name && entry.name.toUpperCase().indexOf(name) !== -1;
jQuery.map
przykład (tutaj jestem przy założeniu jQuery
= $
jak to zwykle bywa; zmienić $
do jQuery
jeśli używasz noConflict
):
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;
}
(I znowu, dodać entry && entry.name &&
tam, jeśli to konieczne.)
co próbowałeś do tej pory poszukiwania? pomożemy ci z kodem, nie zapewniamy go. – Joseph
SO służy do zadawania * pytań *. Jakie jest Twoje pytanie? –
możliwy duplikat [użyj jQuery's find() na obiekcie JSON] (http://stackoverflow.com/questions/4992383/use-jquerys-find-on-json-object) i [JSON znajdź w JavaScript] (http: // /stackoverflow.com/q/1946165/575527) – Joseph