[Astuce] Savoir si l’index d’un tableau associatif existe

En travaillant sous Titanium Appcelerator pour la création d’applications mobile (j’écrirais peut-être un petit quelque chose à ce sujet par ailleurs) je me suis vite confronté à un petit problème. Ce problème, presque insignifiant, m’a tout de même prit plus d’une heure de recherche pour en trouver une solution propre et native (prise en charge par tous les navigateurs).

Le problème est simple : Comment savoir si l’index est présent dans un tableau associatif ?

Bien entendu, on peut faire de la manière suivante :

// Erreur javascript avec Titanium Appcelerator
if(array[key] != undefined) {
// ...
}

Oui mais voila, Titanium ne le prend pas en compte, ni même certains navigateurs. Comment faire alors ? Et bien la réponse est étonnamment simple, mais quand on ne la connait pas, on a du mal à l’inventer.

Rappelons-nous qu’en Javascript, un tableau, c’est avant tout un objet. L’index d’un tableau associatif est alors une propriété d’un objet. Ainsi, au lieu de faire notre recherche sur un index (ce qui provoque des erreurs), il suffit de faire une recherche sur la propriété.

// Marche sous Titanium Appcelerator ainsi que tous les navigateurs
if(array.hasOwnProperty(key)) {
//...
}

La méthode retourne une valeur booléenne, rien de plus simple. Je me sens ainsi bête d’y avoir passé autant de temps alors j’écris ces quelques lignes pour permettre à mes semblables perdus dans les méandres de google de trouver une réponse simple à un problème qui l’est tout autant.

Laisser un commentaire