265 votes

Comment vérifier si un index de tableau existe ou non en javascript ?

Je travaille avec Titanium, mon code ressemble à ceci :

var currentData = new Array();
if(currentData[index]!==""||currentData[index]!==null||currentData[index]!=='null')
{
    Ti.API.info("is exists  " + currentData[index]);
    return true;
}
else
{   
    return false;
}

Je transmets un index à la currentData le tableau. Je ne peux toujours pas détecter un index inexistant en utilisant le code ci-dessus.

501voto

techfoobar Points 33807

Utilisez typeof arrayName[index] === 'undefined'

c'est-à-dire

if(typeof arrayName[index] === 'undefined') {
    // does not exist
}
else {
    // does exist
}

92voto

yeswanth Points 196
var myArray = ["Banana", "Orange", "Apple", "Mango"];

if (myArray.indexOf(searchTerm) === -1) {
  console.log("element doesn't exist");
}
else {
  console.log("element found");
}

23voto

Saulius Points 172

De nos jours, je profiterais de l'ecmascript et l'utiliserais comme ça

return myArr?.[index]

19voto

r3wt Points 718

Quelqu'un peut me corriger si j'ai tort, mais AFAIK la chose suivante est vraie :

  1. Les tableaux ne sont en fait que des objets sous le capot de JS.
  2. Ainsi, ils disposent de la méthode prototype hasOwnProperty "hérité" de Object
  3. dans mes tests, hasOwnProperty peut vérifier si quelque chose existe à un index du tableau.

Donc, tant que ce qui précède est vrai, vous pouvez simplement :

const arrayHasIndex = (array, index) => Array.isArray(array) && array.hasOwnProperty(index);

l'usage :

arrayHasIndex([1,2,3,4],4); sorties : false

arrayHasIndex([1,2,3,4],2); sorties : true

17voto

Peter V Points 3587

C'est exactement ce que le in opérateur est pour. Utilisez-le comme ceci :

if (index in currentData) 
{ 
    Ti.API.info(index + " exists: " + currentData[index]);
}

El réponse acceptée est erronée, elle donnera un faux négatif si la valeur à index est undefined :

const currentData = ['a', undefined], index = 1;

if (index in currentData) {
  console.info('exists');
}
// ...vs...
if (typeof currentData[index] !== 'undefined') {
  console.info('exists');
} else {
  console.info('does not exist'); // incorrect!
}

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