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
}
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
}
in
opérateurCette question a environ 10 ans et il est surprenant que personne n'en ait encore parlé - cependant certaines personnes voient le problème lorsque nous utilisons l'opérateur delete
(par exemple ici). C'est également une solution un peu contre-intuitive, mais l'opérateur in
qui fonctionne dans le 'monde des objets' peut également fonctionner avec des tableaux (car nous pouvons regarder les index du tableau comme des 'clés'...). De cette manière, nous pouvons détecter et distinguer entre une valeur de tableau undefined
et une valeur (index) supprimée par delete
if(index in arrayName) {
// faire quelque chose
}
let arr = [0, 1, 2, 3, null, undefined,6]
delete arr[2]; // nous supprimons l'élément à l'index=2
if(2 in arr) console.log('Vous ne verrez pas ceci car l'idx 2 a été supprimé');
if(5 in arr) console.log('C'est l'élément arr[5]:', arr[5]);
// Tableau entier et indexes plus grands que arr.length:
for(let i=0; i<=9; i++) {
let val = (i in arr) ? arr[i] : 'vide'
let bound = i
`La console Chrome révèle quelques informations sur le tableau extrait supprimé, l'index 2 en réalité n'existe pas du tout (!!!) (de la même manière qu'une clé est supprimée d'un objet). Ce qui est également intéressant ici, c'est que le tableau est vu comme des paires clé-valeur (nous voyons même la clé 'length'). Il est également intéressant de noter que
typeof arrest Object (!!!), l'opérateur
deleteet
infonctionnent comme pour les objets JS (la notation entre crochets
arr[idx]et
obj[key]` est similaire) - il semble donc que le tableau soit un objet JS spécial dans le cœur.
Pour obtenir un effet similaire sans delete
, définissez le tableau comme suit
[0, 1,, 3, null, undefined, 6] // faites attention aux doubles virgules: ",,"``
D'accord, voyons d'abord ce qui se passe si une valeur de tableau n'existe pas en JavaScript, donc si nous avons un tableau comme ci-dessous :
const arr = [1, 2, 3, 4, 5];
et maintenant nous vérifions si 6 se trouve à l'index 5 ou non :
arr[5];
et nous obtenons undefined
...
Cela nous donne essentiellement la réponse, la meilleure façon de vérifier si c'est undefined, donc quelque chose comme ceci :
if("undefined" === typeof arrayName[index]) {
//la valeur du tableau n'est pas là...
}
Il vaut mieux NE PAS faire cela dans ce cas :
if(!arrayName[index]) {
//Ne vérifiez pas comme ça...
}
Parce que imaginez que nous avons ce tableau :
const arr = [0, 1, 2];
et nous faisons :
if(!arr[0]) {
//Cela passe, car en JavaScript 0 est falsy
}
Donc, comme vous pouvez le voir, même si 0 est là, il n'est pas reconnu, il y a quelques autres choses qui peuvent faire la même chose et rendre votre application boguée, alors faites attention, je les liste tous ci-dessous :
undefined
''
Avec Lodash, vous pouvez faire :
if(_.has(req,'documents')){
if (req.documents.length)
_.forEach(req.documents, function(document){
records.push(document);
});
} else {
}
if(_.has(req,'documents'))
sert à vérifier si notre objet de requête a une propriété nommée documents
et si c'est le cas, le prochain if (req.documents.length)
sert à valider s'il ne s'agit pas d'un tableau vide, afin que les autres opérations comme forEach
puissent être exécutées.
Pour vérifier si cela n'a jamais été défini ou s'il a été supprimé :
if(typeof arrayName[index]==="undefined"){
//l'index n'est pas dans le tableau
}
fonctionne également avec les tableaux associatifs et les tableaux où vous avez supprimé certains index
Pour vérifier s'il n'a jamais été défini, s'il a été supprimé ou s'il s'agit d'une valeur nulle ou logiquement vide (NaN, chaîne vide, faux) :
if(typeof arrayName[index]==="undefined"||arrayName[index]){
//l'index n'est pas défini ou la valeur est vide
}
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.
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".