Obtenez de l'indice de tableau d'objets via jquery
J'ai le tableau suivant:
var = array[
{"id" : "aa", "description" : "some description"},
{"id" : "bb", "description" : "some more description"},
{"id" : "cc", "description" : "a lot of description"}]
et j'essaye de trouver l'indice de la matrice qui contient les id === "bb"
. La solution que j'ai trouvé est la suivante:
var i = 0;
while(array[i].id != "bb"){
i++;
}
alert(i) //returns 1
Est-il un moyen plus facile qu'a la croix-des fonctionnalités du navigateur? J'ai essayé $.inArray(id,array)
mais ça ne fonctionne pas.
- Plus facile? Quelle est la part de qui ne l'est pas déjà facile? (si vous devez ajouter un peu de validation pour que le code existe)
- Je sais que j'ai juste pense que je dois éviter les boucles autant que possible 😉 Alors j'ai pensé que peut-être il ya un chemin.... Bon point avec la validation. Un simple try/catch devrait faire l'affaire, non?
- Pas besoin de try/catch. Il suffit d'utiliser un
for
boucle au lieu dewhile
et l'utilisation-1
comme le résultat si aucun n'est trouvé - qui semble être commun. Je vais vous faire une réponse je pense
Vous devez vous connecter pour publier un commentaire.
Je ne vois pas de problème avec la complexité de votre code, mais je vous recommande un couple de modifications, y compris l'ajout de la validation de certains dans le cas où la valeur n'existe pas. En plus, vous pouvez l'envelopper le tout dans une réutilisables fonction d'assistance...
Cela peut ensuite être utilisé dans votre exemple comme ceci:
Voici un exemple de travail
REMARQUE: il doit être de la croix-navigateur compatible, et seront également susceptibles d'être plus rapide que n'importe quel JQuery alternative.
Mise à jour moderne avec JS.
inArray ne peut pas travailler avec un tableau multidimensionnel essayez donc comme suit
Démo
Vous pouvez utiliser jQuery.chaque - http://api.jquery.com/jQuery.each/