Sélectionnez parmi un tableau d’objects en fonction de la valeur de la propriété en JavaScript

J’ai des objects 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 souhaite récupérer l’object du tableau JavaScript en fonction de son identifiant.

Supposons qu’un object 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]; 

Comme vous avez déjà jQuery, vous pouvez utiliser $.grep :

Trouve les éléments d’un tableau qui satisfont une fonction de filtre. Le tableau d’origine n’est pas affecté.

Donc quelque chose comme ça:

 var matches = $.grep(ObjectsList, function(e) { return e.id == id }); 

cela vous laissera un tableau d’entrées correspondantes d’ ObjectsList dans les matches du tableau. 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’un seul match ou si vous ne voulez que le premier, 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 dans l'approche «en boucle» et beaucoup de gens vont me taper du doigt 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; } }