Ich habe eine Reihe von Objekten:
Object = {
1 : { name : bob , dinner : pizza },
2 : { name : john , dinner : sushi },
3 : { name : larry, dinner : hummus }
}
Ich möchte in der Lage sein, das Objekt / Array nach dem Schlüssel "Abendessen" zu durchsuchen und festzustellen, ob es mit "Sushi" übereinstimmt.
Ich weiß, dass jQuery $ .inArray hat, aber es scheint nicht mit Arrays von Objekten zu funktionieren. Oder vielleicht irre ich mich. indexOf scheint auch nur auf einer Array-Ebene zu funktionieren.
Gibt es dafür keine Funktion oder keinen vorhandenen Code?
javascript
jquery
arrays
search
Fragesteller
quelle
quelle
Object
das in Javascript reservierteObject
Objekt das Objekt ist, dh die Mutter aller Objekte.Antworten:
Wenn Sie ein Array wie haben
Sie können die
filter
Methode eines Array-Objekts verwenden:In neueren JavaScript-Implementierungen können Sie einen Funktionsausdruck verwenden:
Sie können nach Personen suchen, die
"dinner": "sushi"
a verwendenmap
oder ein
reduce
Ich bin sicher, dass Sie dies auf beliebige Schlüssel und Werte verallgemeinern können!
quelle
grep
Methode von jQuery verwendet. Es könnte sinnvoll sein, in Ihre Antwort zu rollen, da es dasselbe Konzept ist wie das, was Sie tun, aber jQuery-abhängig und scheißbrowserfreundlich.jQuery verfügt über eine integrierte Methode
jQuery.grep
, die ähnlich wie die ES5-filter
Funktion von @ adamse's Answer funktioniert und in älteren Browsern einwandfrei funktionieren sollte.Am Beispiel von adamse:
Sie können Folgendes tun
quelle
jsFiddle .
Solange
-1
es keinen gültigen Schlüssel gibt.quelle
Wenn Sie diese Suche häufig durchführen, sollten Sie das Format Ihres Objekts ändern, damit das Abendessen tatsächlich ein Schlüssel ist. Dies ähnelt dem Zuweisen eines primären Clusterschlüssels in einer Datenbanktabelle. Also zum Beispiel:
Sie können jetzt einfach so darauf zugreifen:
Object['sushi']['name']
Oder wenn das Objekt wirklich so einfach ist (nur 'Name' im Objekt), können Sie es einfach ändern in:
Und dann wie folgt darauf zugreifen :
Object['sushi']
.Es ist natürlich nicht immer möglich oder zu Ihrem Vorteil, Ihr Datenobjekt so umzustrukturieren, aber der Punkt ist, manchmal ist die beste Antwort zu überlegen, ob Ihr Datenobjekt am besten strukturiert ist. Das Erstellen eines solchen Schlüssels kann schneller sein und saubereren Code erstellen.
quelle
Sie finden das Objekt im Array mit der Alasql- Bibliothek:
Versuchen Sie dieses Beispiel in jsFiddle .
quelle
Sie können eine einfache for in-Schleife verwenden:
Das folgende Geigenbeispiel fügt alle Objekte, die enthalten sind,
dinner:sushi
in ein Array ein:https://jsfiddle.net/3asvkLn6/1/
quelle
Hier gibt es bereits viele gute Antworten. Warum also nicht noch eine? Verwenden Sie eine Bibliothek wie lodash oder Unterstrich :)
quelle
Ich musste eine verschachtelte Sitemap-Struktur nach dem ersten Blattelement durchsuchen, das einen bestimmten Pfad erstellt. Ich habe den folgenden Code nur mit
.map()
.filter()
und entwickelt.reduce
. Gibt das zuletzt gefundene Element zurück, das dem Pfad entspricht/c
.quelle
Ich würde versuchen, das Rad nicht neu zu erfinden. Wir verwenden den Objekt-Scan für alle unsere Datenverarbeitungsanforderungen. Es ist konzeptionell sehr einfach, erlaubt aber viele coole Sachen. So würden Sie Ihre spezifische Frage lösen
Datendefinition
Logik
Ausgabe
quelle
Wenn Sie ein bestimmtes Objekt über die Suchfunktion finden möchten, versuchen Sie einfach Folgendes:
Dies ist ein Beispielobjekt:
Der Code iteriert und findet das "Benutzer" -Array und sucht nach dem Objekt, das Sie darin suchen.
Mein Problem war, als der Array-Index bei jeder Fensteraktualisierung geändert wurde und sich entweder im 3. oder im zweiten Array befand, aber das spielt keine Rolle.
Arbeitete wie ein Zauber für mich!
In Ihrem Beispiel ist es etwas kürzer:
quelle