Wenn deine Frage ist, gibt es ein eingebautes Ding, das die Suche nach dir macht, dann nein, gibt es nicht. Sie durchlaufen das Array grundsätzlich entweder mit String#indexOf
oder regular expression, um die Strings zu testen.
Für die Schleife, müssen Sie mindestens drei Möglichkeiten:
Eine langweilige alte for
Schleife.
In ES5-fähigen Umgebungen (oder mit einer Unterlegscheibe), Array#filter
.
Weil Sie jQuery verwenden, jQuery.map
.
langweilige alte for
Schleife Beispiel:
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;
}
Wo Sie, dass mit obj.list
als source
und dem gewünschten Namen Fragment als name
nennen würde.
Oder wenn es eine Chance gibt, gibt es leere Einträge oder Einträge ohne Namen, ändern Sie das if
zu:
if (entry && entry.name && entry.name.toUpperCase().indexOf(name) !== -1) {
Array#filter
Beispiel:
function search(source, name) {
var results;
name = name.toUpperCase();
results = source.filter(function(entry) {
return entry.name.toUpperCase().indexOf(name) !== -1;
});
return results;
}
Und wieder, wenn eine Chance, dass es leer ist Einträge (zB undefined
, im Gegensatz zu fehlenden; filter
überspringen fehlt Einträge), ändern Sie die innere Rückkehr zu:
return entry && entry.name && entry.name.toUpperCase().indexOf(name) !== -1;
jQuery.map
Beispiel (hier gehe ich davon aus jQuery
= $
wie es normalerweise der Fall; ändern $
zu jQuery
wenn Sie mit 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;
}
(Und wieder, fügen Sie entry && entry.name &&
dort, wenn nötig.)
was haben Sie mit der Suche bisher versucht? Wir helfen Ihnen mit Code, nicht mit einem. – Joseph
SO ist für Fragen * Fragen *. Was ist deine Frage? –
mögliches Duplikat von [jQuerys find() auf JSON-Objekt verwenden] (http://stackoverflow.com/questions/4992383/use-jquerys-find-on-json-object) und [JSON finde in JavaScript] (http://stackoverflow.com/q/1946165/575527) – Joseph