Bekommen index des array von Objekten via jquery
Habe ich Folgendes array:
var = array[
{"id" : "aa", "description" : "some description"},
{"id" : "bb", "description" : "some more description"},
{"id" : "cc", "description" : "a lot of description"}]
und ich versuche zu finden, den index des array mit den id === "bb"
. Die Lösung, die ich mir ausgedacht habe ist folgende:
var i = 0;
while(array[i].id != "bb"){
i++;
}
alert(i) //returns 1
Gibt es ein einfacher Weg, die hat cross-browser-Funktionalität? Ich habe versucht $.inArray(id,array)
aber es funktioniert nicht.
Einfacher? Was für ein Teil das nicht schon zu einfach? (obwohl Sie sollten einige Validierung um sicherzustellen, dass die id existiert)
Ich weiß, dass ich nur glaube, ich habe zu vermeiden, Schleifen Sie so viel wie möglich 😉 Also dachte ich es gibt vielleicht eine Möglichkeit.... Guter Punkt mit der Validierung. Eine einfache try/catch-sollte die Arbeit tun, richtig?
Keine Notwendigkeit für try/catch. Verwenden Sie einfach ein
Ich weiß, dass ich nur glaube, ich habe zu vermeiden, Schleifen Sie so viel wie möglich 😉 Also dachte ich es gibt vielleicht eine Möglichkeit.... Guter Punkt mit der Validierung. Eine einfache try/catch-sollte die Arbeit tun, richtig?
Keine Notwendigkeit für try/catch. Verwenden Sie einfach ein
for
loop statt while
und verwenden -1
als das Ergebnis, wenn keiner gefunden wird, das scheint weitverbreitet zu sein. Ich werde Ihnen eine Antwort, die ich denkeInformationsquelleAutor FLuttenb | 2013-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehe ich keine problem mit der Komplexität des Codes, aber ich würde empfehlen, ein paar änderungen, einschließlich der Zugabe von einigen Validierung falls der Wert nicht vorhanden ist. Weiter können Sie wickeln Sie es alle in einer wiederverwendbaren Helfer-Funktion...
Diese können dann verwendet werden, in deinem Beispiel etwa so:
Hier ist ein funktionierendes Beispiel
HINWEIS: Dies sollte cross-browser kompatibel, und wird wahrscheinlich auch schneller sein als jede JQuery-alternative.
InformationsquelleAutor musefan
Update mit modernen JS.
InformationsquelleAutor Labu
inArray kann nicht Arbeit mit mehrdimensionalen Arrays so versuchen wie folgt
Demo
InformationsquelleAutor Thirumalai murugan
Können Sie jQuery verwenden.jeder - http://api.jquery.com/jQuery.each/
InformationsquelleAutor Chokchai
InformationsquelleAutor Andrii Skreka