Est-ce que cela fonctionnera pour tester si une valeur à la position "index" existe ou non, ou existe-t-il une meilleure façon:
if(arrayName[index]==""){
// do stuff
}
javascript
arrays
Ankur
la source
la source
Réponses:
Conceptuellement, les tableaux en JavaScript contiennent des
array.length
éléments, en commençantarray[0]
par jusqu'àarray[array.length - 1]
. Un élément de tableau avec indexi
est défini pour faire partie du tableau s'ili
est compris entre0
etarray.length - 1
inclus. Si i n'est pas dans cette plage, ce n'est pas dans le tableau.Donc, par concept, les tableaux sont linéaires, commençant par zéro et allant au maximum, sans aucun mécanisme pour avoir des "espaces" à l'intérieur de cette plage où aucune entrée n'existe. Pour savoir si une valeur existe à un index de position donné (où index est 0 ou un entier positif), vous utilisez littéralement
Maintenant, sous le capot, les moteurs JavaScript n'alloueront certainement pas l'espace de tableau de manière linéaire et contiguë comme ceci, car cela n'aurait pas beaucoup de sens dans un langage dynamique et serait inefficace pour certains codes. Ce sont probablement des tables de hachage ou un mélange hybride de stratégies, et les plages non définies du tableau ne sont probablement pas affectées à leur propre mémoire. Néanmoins, JavaScript, le langage veut présenter les tableaux de
array.length
n comme ayant n membres et ils sont nommés de 0 à n - 1 , et tout ce qui se trouve dans cette plage fait partie du tableau.Ce que vous voulez probablement, cependant, c'est de savoir si une valeur dans un tableau est réellement quelque chose de défini - c'est-à-dire que ce n'est pas le cas
undefined
. Peut-être que vous voulez même savoir si c'est défini et nonnull
. 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 laarray.length
propriété, toutes les nouvelles valeurs le serontundefined
.Déterminer si une valeur donnée est significative ou a été définie. Ce n'est pas
undefined
, ounull
:ou
Fait intéressant, en raison des règles de comparaison de JavaScript, mon dernier exemple peut être optimisé jusqu'à ceci:
la source
length
propriété, auquel cas les deux derniers exemples sont plus appropriés.foo !== 'undefined' && foo !== null
par justefoo != null
0
àarray.length - 1
. Cependant, toutes ces valeurs ne seront pas des valeurs définies . Si vous utilisez le mot clé delete sur un membre du tableau, il redéfinira ce membre comme non défini, tout comme si vous étendez un tableau en incrémentant son paramètre array.length, les nouvelles valeurs commenceront comme non définies. En réalité, les implémentations Javascript optimiseront probablement le stockage des tableaux et certaines ou toutes les valeurs non définies peuvent n'occuper aucune mémoire.new Array(1)[0] === undefined
mais la valeur est vide.[undefined][0] === undefined
mais la valeur est définie; le tableau a une valeur. La seule réponse parfaite consiste à utiliserin
ouhasOwnProperty()
-idx in array
ouarray.hasOwnProperty(idx)
--par cette réponse: stackoverflow.com/a/39171620/3120446Ne pouvons-nous pas simplement faire ceci:
la source
if(arrayName.length) {...
ferait-il une différence?if(arrayName.length) {...
échouenull
[undefined, undefined]
lequel est un tableau de longueur = 2.Utiliser uniquement
.length
n'est pas sûr et provoquera une erreur dans certains navigateurs. Voici une meilleure solution:ou, nous pouvons utiliser:
la source
la source
la source
x == null
ne sera vrai que pour null ou indéfini, rien d'autre. De même,x != null
sera vrai pour tout ce qui n'est ni nul ni indéfini. À moins que vous n'ayez spécifiquement besoin de rechercher un indéfini, appuyez-vous simplement sur la qualité de la conversion implicite.Approche courte et universelle
Si vous souhaitez vérifier un tableau s'il contient des valeurs fausses (comme des chaînes fausses, non définies, nulles ou vides), vous pouvez simplement utiliser la méthode every () comme ceci:
Par exemple:
Si vous devez obtenir un premier indice de valeur de falsification, vous pouvez le faire comme ceci:
Si vous avez juste besoin de vérifier la valeur falsifiée d'un tableau pour un index donné, vous pouvez le faire comme ceci:
la source
Si vous entendez par 'Null' -> Ses éléments sont nuls ou égaux à '', dans ce cas: Vérifiez si le tableau est vide après avoir filtré tous les éléments 'null'
Bien sûr, ajoutez la méthode Clean avant:
la source
Je recommanderais de créer une fonction comme celle-ci:
Vous pourriez l'appeler comme ceci:
Forcer le développeur à adhérer à l'interface isEmptyEl interceptera les erreurs d'entrée telles que les variables arrayName ou indexVal non définies.
(Il est généralement recommandé de programmer de manière défensive lors de la programmation en Javascript.)
Vous obtiendriez une erreur comme celle-ci si arrayName n'était pas défini:
Des résultats similaires pour un indexVal non défini.
Vous obtenez une erreur si les valeurs de tableau ou d'index n'existent pas.
Pour une entrée valide, vous n'obtiendrez un vrai que si arrayName [indexVal] est l'un des éléments suivants:
la source
Cela dépend de ce que vous entendez par «vide».
Lorsque vous essayez d'obtenir la valeur d'une propriété sur un objet qui n'a pas de propriété avec ce nom, vous obtiendrez la valeur
undefined
.C'est ce qui se passe avec les tableaux clairsemés: tous les indices entre
0
etarray.length-1
n'existent pas.Vous pouvez donc vérifier si
array[index] === undefined
.Cependant, la propriété
index
peut exister avec uneundefined
valeur. Si vous souhaitez filtrer ce cas, vous pouvez utiliser l'in
opérateur ouhasOwnProperty
, comme décrit dans Comment vérifier si un objet a une propriété en JavaScript?Si vous souhaitez considérer qu'une propriété existante avec une valeur
undefined
ounull
n'existe pas, vous pouvez utiliser la comparaison lâchearray[index] == undefined
ouarray[index] == null
.Si vous savez que le tableau n'est pas rare, vous pouvez comparer
index
avecarray.length
. Mais pour être sûr, vous pouvez vous assurer qu'ilindex
s'agit bien d'un index de tableau, voir Vérifier si le nom de la propriété est un index de tableaula source
OK, voyons d'abord ce qui se passerait si une valeur de tableau n'existe pas en JavaScript, donc si nous avons un tableau comme ci-dessous:
et maintenant on vérifie si 6 est là ou non à l'indice 5 :
et nous obtenons
undefined
...Donc, c'est essentiellement nous donner la réponse, la meilleure façon de vérifier si non défini, donc quelque chose comme ceci:
Il vaut mieux NE PAS faire cela dans ce cas:
Imaginez que nous ayons ce tableau:
et nous faisons:
Donc, comme vous le voyez, même 0 est là, il n'est pas reconnu, il y a peu d'autres choses qui peuvent faire la même chose et vous rendre bogué, alors faites attention, je les énumère toutes:
undefined
''
la source
Je voudrais souligner quelque chose que quelques-uns semblent avoir manqué: à savoir qu'il est possible d'avoir une position de tableau "vide" au milieu de votre tableau. Considérer ce qui suit:
Le moyen naturel de vérifier serait alors de voir si le membre du tableau n'est pas défini, je ne suis pas sûr qu'il existe d'autres moyens
la source
essayez ceci si le tableau [index] est nul
la source
Avec Lodash, vous pouvez faire:
if(_.has(req,'documents'))
est de vérifier si notre objet de demande a une propriété nomméedocuments
et s'il a cet accessoire, le prochainif (req.documents.length)
est de valider s'il ne s'agit pas d'un tableau vide, afin que les autres éléments commeforEach
puissent être poursuivis.la source
Pour vérifier s'il n'a jamais été défini ou s'il a été supprimé:
fonctionne également avec les tableaux associatifs et les tableaux où vous avez supprimé certains index
Pour vérifier si elle n'a jamais été définie, a été supprimée OU est une valeur vide nulle ou logique (NaN, chaîne vide, false):
la source
J'ai rencontré ce problème en utilisant des tables de données laravel. Je stockais une valeur JSON appelée
properties
dans un journal d'activité et je voulais afficher un bouton basé sur cette valeur étant vide ou non.Eh bien, les tables de données interprétaient cela comme un tableau s'il était vide et un objet s'il ne l'était pas, par conséquent, la solution suivante a fonctionné pour moi:
Un objet n'a pas de propriété length.
la source
Je pense que cette décision est appropriée pour les gars qui préfèrent la programmation fonctionnelle déclarative à la POO impérative ou à la procédure. Si votre question est " Y a-t-il des valeurs à l'intérieur? (Une valeur véridique ou fausse)", vous pouvez utiliser la
.some
méthode pour valider les valeurs à l'intérieur.function isEmpty(arr) { ... }
.[].length
résultant0
qui est dangereux dans certains cas.[].length > 0
dicton "sa longueur est-elle supérieure à zéro?"Exemples avancés:
la source
Vous pouvez utiliser la bibliothèque Loadsh pour le faire plus efficacement, comme:
si vous avez un tableau nommé "pets", par exemple:
Pour vérifier toutes les valeurs de tableau pour les valeurs nulles ou non définies:
Consultez d'autres exemples sur http://underscorejs.org/
la source
fn(){}
est une erreur de syntaxe, et on ne sait pas du tout comment cela aide à vérifier si un élément de tableau existe ou non à un certain index.