533 votes

Comment puis-je vérifier en JavaScript si une valeur existe à un certain index du tableau?

Est-ce que cela fonctionnera pour tester si une valeur à la position index existe ou non, ou y a-t-il une meilleure façon de le faire :

if(arrayName[index]==""){
     // do stuff
}

6 votes

Veuillez noter qu'il ne s'agit pas de vérifier si tout le tableau est vide, mais juste un certain emplacement qui a la valeur d'index"

0 votes

Le titre peut être amélioré en disant "Comment puis-je vérifier en JavaScript si une valeur existe à un certain index du tableau".

754voto

thomasrutter Points 42905

Conceptuellement, les tableaux en JavaScript contiennent array.length éléments, en commençant par array[0] jusqu'à array[array.length - 1]. Un élément de tableau avec l'index i est défini comme faisant partie du tableau si i est compris entre 0 et array.length - 1 inclus. Si i n'est pas dans cette plage, il n'est pas dans le tableau.

Donc, conceptuellement, les tableaux sont linéaires, commençant par zéro et allant jusqu'à un maximum, sans mécanisme pour avoir des "lacunes" à l'intérieur de cette plage où aucune entrée n'existe. Pour savoir si une valeur existe à une position donnée (où l'index est 0 ou un entier positif), il suffit littéralement d'utiliser

if (i >= 0 && i < array.length) {
  // c'est dans le tableau
}

Maintenant, en réalité, les moteurs JavaScript n'alloueront presque certainement pas d'espace de tableau de manière linéaire et contiguë comme cela, car cela n'aurait pas beaucoup de sens dans un langage dynamique et ce serait inefficace pour certains codes. Ils sont probablement des tables de hachage ou un mélange hybride de stratégies, et les plages non définies du tableau n'ont probablement pas alloué leur propre mémoire. Néanmoins, le langage JavaScript veut présenter les tableaux de array.length n comme ayant n membres et ils sont nommés 0 à n - 1, et tout ce qui est dans cette plage fait partie du tableau.

ce que vous voulez probablement, cependant, c'est savoir si une valeur dans un tableau est effectivement définie - c'est-à-dire, ce n'est pas undefined. Peut-être même que vous voulez savoir si elle est définie et pas null. Il est possible d'ajouter des membres à un tableau sans jamais définir leur valeur : par exemple, si vous ajoutez des valeurs de tableau en augmentant la propriété array.length, toutes les nouvelles valeurs seront undefined.

Pour déterminer si une valeur donnée est quelque chose de signifiant, ou a été définie. C'est-à-dire, pas undefined, ou null:

if (typeof array[index] !== 'undefined') {

ou

if (typeof array[index] !== 'undefined' && array[index] !== null) {

De manière intéressante, en raison des règles de comparaison de JavaScript, mon dernier exemple peut être optimisé comme ceci :

if (array[index] != null) {
  // Les opérateurs == et != considèrent null comme égal seulement à null ou undefined
}

6 votes

Il est très probable que la personne qui a posé la question sait quel type de tableau elle manipule, mais juste pour être exhaustif : les objets de type tableau contiennent également généralement une propriété length, auquel cas les deux derniers exemples sont plus appropriés.

0 votes

Merci Justin.... Je suis en fait assez novice en JS, donc toutes ces informations sont très utiles

0 votes

L'exemple ci-dessus s'applique également aux objets de type tableau. La définition d'un objet de type tableau est un objet avec la propriété obj.length, et les propriétés numérotées de 0 à obj.length-1.

349voto

madi Points 890

Ne pouvons-nous pas simplement faire ceci:

if(arrayName.length > 0){   
    //ou **if(arrayName.length)**
    //cet array n'est pas vide 
}else{
   //cet array est vide
}

11 votes

La question concernait la façon de tester si un indice particulier d'un tableau existe ou non.

27 votes

Est-ce que if(arrayName.length) {... ferait une différence?

13 votes

Pourquoi autant de votes positifs ? Cela ne répond clairement pas à la question.

45voto

Joni Points 2969

Utiliser uniquement .length n'est pas sûr et provoquera une erreur dans certains navigateurs. Voici une meilleure solution:

if(array && array.length){   
   // non vide 
} else {
   // vide
}

ou, nous pouvons utiliser:

Object.keys(__array__).length

24voto

x2. Points 5652
if(!arrayName[index]){
     // faire quelque chose
}

9 votes

Cela ferait également quelque chose si la valeur du tableau existe mais est 0, null, "", etc.

0 votes

Thomas a raison; cependant, ceci est suffisant pour de nombreux cas (que vous devriez probablement énumérer).

0 votes

De loin le moyen le plus simple

8voto

Rex M Points 80372
si(arrayName.length > index && arrayName[index] !== null) {
    //arrayName[index] a une valeur
}

0 votes

@thomasrutter J'ai du mal à trouver un moyen possible de se retrouver avec un élément de tableau qui est indéfini.

0 votes

Hmmm, does (myarray[1] = undefinedvariable) work? Or just (myarray[1] = undefined)?

0 votes

@thomasrutter les deux lanceraient une exception, non? (undefinedvariable est indéfini)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X