Forums Développement Multimédia

Aller au contenu

Synthaxe de test d'un array

CODE Actionscript

5 réponses à ce sujet

#1 aocte

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 148 messages

Posté 14 November 2011 - 14:04 PM

Bonjour!

Voilà, je n'arrive pas à tester mon tableau (et j'arrive pas à trouver sur la toile la syntaxe correcte..)

Mon array contient 1, 2, 4.

Et je voudrais faire un

if (MonArray contains ("1, 2 ,4") { trace("ok"); }

Mais quelle est la syntaxe pour le faire?

C'est sans doute très con, mais pas moyen de mettre la main sur cette solution :)

#2 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 14 November 2011 - 14:26 PM

Bonjour,

Utilisez la méthode indexOf() d'un tablaeu pour obtenir l'index de l'élément rechercher. Si l'index est inférieur à 0, c'est que le tableau ne contient pas l'élément :


if(array.indexOf(1) < 0) //do ...
 


#3 aocte

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 148 messages

Posté 14 November 2011 - 14:41 PM

Et je peux tester d'un coup les trois éléments de mon tableau ? Ou je dois le faire séparément ?

if (MonArray.indexOf(1,2,4) <0)

Avec cette syntaxe il me dit que le nombre maximum attendu d'arguments est 2..

#4 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 14 November 2011 - 16:35 PM

Un seul à la fois...

#5 Vinyl

    Ceinture Noire

  • Members
  • PipPipPipPipPipPipPip
  • 284 messages

Posté 14 November 2011 - 17:04 PM

Salut,

Tu veux juste tester si tu as bien tous tes éléments dans ton tableau ?

Tu peux connaitre la longueur du tableau :

trace (tableau.length);

Tu stockes cette valeur dans une variable.

Ensuite, pour vérifier si tu as tout :

if (tableau.length == (taVariableLongeurTableau) {
        trace ("ok");
}

Après, il y a sans plus élégant mais ça dépend de ce que tu veux faire ?

Modifié par Vinyl, 14 November 2011 - 17:05 PM.


#6 dldler

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 4163 messages

Posté 14 November 2011 - 17:13 PM

Le mieux, c'est d'écrire une petite fonction sur le principe suivant :
pour chaque valeur :
- si indexOf(valeur) == -1 return false
et si on a passé tous les test, on renvoie la valeur vraie.


Ça s'utiliserait comme ça :

var tableauA:Array=[1,2,3,4,5];

if(contenuDans([1,2,3],tableauA))
{
   trace("Le tableau "+tableauA + " inclue les éléments 1,2 et 3");
}
else
{
   trace("Le tableau "+tableauA + " n'inclue pas les éléments 1,2 et 3");
}


// La fonction qui vérifie l'inclusion du premier tableau dans le second :
function contenuDans(tab1,tab2):Boolean
{
   for each (var o:Object in tab1)
   {
      if(tab2.indexOf(o)==-1) return false // non trouvé > donc non inclus
   }
   return true; // Tous testés, donc inclus
}
 

PS : évidemment, à condition que j'ai bien compris la demande… et devant la dispersion des réponses, il serait peut-être bien de nous dire ton objectif caché sous cette vérification, parce qu'il y a peut être beaucoup plus simple…



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)