J'ai des objets JSON qui ont plusieurs propriétés telles qu'un identifiant et un nom. Je les stocke dans un tableau JavaScript, puis sur la base d'une liste déroulante, je veux récupérer l'objet du tableau JavaScript en fonction de son identifiant.
Supposons qu'un objet ait un identifiant et un nom, comment les sélectionner dans ma variable de tableau?
var ObjectsList = data;
var id = $("#DropDownList > option:selected").attr("value");
ObjectsList["id=" + id];
Puisque vous avez déjà jQuery, vous pouvez utiliser $.grep
:
Recherche les éléments d'un tableau qui satisfont une fonction de filtre. La baie d'origine n'est pas affectée.
Donc quelque chose comme ça:
var matches = $.grep(ObjectsList, function(e) { return e.id == id });
cela vous laissera un tableau d'entrées correspondantes de ObjectsList
dans le tableau matches
. Ce qui précède suppose que ObjectsList
a une structure comme celle-ci:
[
{ id: ... },
{ id: ... },
...
]
Si vous savez qu'il n'y a qu'une seule correspondance ou si vous ne voulez que la première, vous pouvez le faire de cette façon:
for(var i = 0, m = null; i < ObjectsList.length; ++i) {
if(ObjectsList[i].id != wanted_id)
continue;
m = a[i];
break;
}
// m is now either null or the one you want
Il y a beaucoup de variations sur l'approche de boucle for
et beaucoup de gens vont me faire signe parce qu'ils pensent que continue
est un mauvais mot; si vous n'aimez pas continue
, vous pouvez le faire de cette façon:
for(var i = 0, m = null; i < ObjectsList.length; ++i) {
if(ObjectsList[i].id == wanted_id) {
m = ObjectsList[i];
break;
}
}