FAQ MooToolsConsultez toutes les FAQ
Nombre d'auteurs : 6, nombre de questions : 67, dernière mise à jour : 1 décembre 2012
- Comment réunir deux tableaux ?
- Comment nettoyer les valeurs null dans un tableau ?
- Comment savoir si une valeur est contenue dans un tableau ?
- Comment appliquer une fonction à tous les éléments d'un tableau ?
- Comment supprimer les occurrences d'une valeur dans un tableau, ou bien le vider totalement ?
- Comment vérifier une condition sur tous les éléments d'un tableau ? Et comment les récupérer ?
- Comment obtenir un ou bien le dernier élément d'un tableau ?
- Comment ajouter un élément à un tableau s'il n'y existe pas ?
- Comment copier un tableau ?
Il est tout à fait possible de réunir les éléments d'un tableau avec ceux d'un autre tableau. Au moins trois possibilités existent.
1)Les éléments en premières positions ensemble, ceux en secondes positions ensemble et ainsi de suite. C'est grâce à la méthode associate que l'on parvient à faire cela très facilement. Le résultat obtenu est un tableau de type clé : valeur :
var
noms =
[
'
Dupont
'
,
'
Durand
'
,
'
Pignon
'
]
;
var
prenoms =
[
'
Jean
'
,
'
Jacques
'
,
'
François
'
]
;
var
noms_complets =
prenoms.
associate
(noms);
//
noms_complets
=
{'Dupont':
'Jean',
'Durand':
'Jacques',
'Pignon':
'François'}
alert
("
Dupont
"
);
//
Résultat
:
Jean
2) Ajouter les éléments d'un tableau à la suite des éléments de l'autre
tableau. Dans ce cas, c'est la méthode append que l'on utilisera.
Le résultat est le tableau sur lequel on exécute l'append augmenté des valeurs
du tableau passé en paramètre :
var
sport_hiver =
new
Array
("
ski
"
,
"
hockey
sur
glace
"
,
"
bobsleigh
"
,
"
curling
"
);
var
sport_salle =
new
Array
("
mini
foot
"
,
"
basketball
"
,
"
handball
"
);
var
sports =
sport_hiver.
append
(sport_salle);
//
Résultat
:
sports
=
sport_hiver
=
["ski",
"hockey
sur
glace",
"bobsleigh",
"curling",
"mini
foot",
"basketball",
"handball"]
3) Obtenir un tableau sans doublon en combinant les deux tableaux.
La méthode combine ne prend en compte qu'une seule fois chaque valeur :
var
sport_salle =
new
Array
("
mini
foot
"
,
"
basketball
"
,
"
handball
"
,
"
tennis
"
);
var
sport_exterieur =
new
Array
("
football
"
,
"
tennis
"
,
"
base
ball
"
);
var
sports =
sport_salle.
combine
(sport_exterieur);
//
Résultats
:
sports
=
["mini
foot",
"basketball",
"handball",
"tennis",
"football",
"base
ball"]
La méthode clean permet d'enlever les valeurs fort courantes null ou undefined d'un tableau. C'est un nouveau tableau qui est renvoyé :
var
test1 =
0
;
var
test2 =
null
;
var
mon_tableau =
new
Array
(1
,
"
Deux
"
,
true
,
undefined,
"
"
,
test1,
test2);
var
nouveau_tableau =
mon_tableau.
clean
();
//
Résultat
:
nouveau_tableau
=
[1,
"Deux",
true,
"",
0]
Attention, la valeur "" n'est pas considérée comme null !
Lien : Comment supprimer les occurrences d'une valeur dans un tableau, ou bien le vider totalement ?
Au lieu de devoir parcourir tout le tableau et vérifier l'existence d'une valeur dans le tableau, il existe la méthode contains qui renvoie true si la valeur est retrouvée au moins une fois dans le tableau et false sinon :
var
mon_tableau =
new
Array
("
a
"
,
"
b
"
,
"
c
"
);
var
contient_a =
mon_tableau.
contains
("
a
"
);
//
Résultat
:
true
var
contient_d =
mon_tableau.
contains
("
d
"
);
//
Résultat
:
false
Avec la méthode each de Array, on applique très facilement une fonction à toutes les valeurs du tableau. La méthode each accepte un premier paramètre qui est la fonction. Cette déclaration de fonction connait l'item, l'index de l'item et array, le tableau en lui-même.
var
mon_tableau =
new
Array
('
Bonjour
'
,
'
Salut
'
,
'
Bonsoir
'
,
'
Au
revoir
'
);
var
nom =
"
Toto
"
;
mon_tableau.
each
(function
(item,
index){
alert
(index +
"
:
"
+
item +
"
"
+
nom);
}
);
//
Résultats
:
//
0
:
Bonjour
Toto
//
1
:
Salut
Toto
//
2
:
Bonsoir
Toto
//
3
:
Au
revoir
Toto
Le second paramètre de each est optionnel. C'est un objet que
l'on désire passer à la fonction et qui sera l'objet pointé par this :
mon_tableau.
each
(function
(item,
index){
alert
(index +
"
:
"
+
item +
"
"
+
this
);
}
,
nom);
On peut bien entendu déclarer sa fonction en dehors et l'appeler en lui passant
les paramètres nécessaires :
function
ma_fonction
(index,
item,
nom)
{
alert
(index +
"
:
"
+
item +
"
"
+
nom);
}
mon_tableau.
each
(function
(item,
index){
ma_fonction
(index,
item,
this
);
}
,
nom);
Lien : Comment vérifier une condition sur tous les éléments d'un tableau ? Et comment les récupérer ?
1) Pour nettoyer un tableau d'une valeur précise, on peut se servir de la méthode erase qui renverra le tableau sans les occurrences de la valeur spécifiée :
var
mon_tableau =
new
Array
("
Jean
"
,
"
Mathieu
"
,
"
Judas
"
,
"
Pierre
"
,
"
Judas
"
,
"
Luc
"
,
"
Thomas
"
,
"
Judas
"
);
mon_tableau =
mon_tableau.
erase
("
Judas
"
);
//
Résultats
:
mon_tableau
=
["Jean",
"Mathieu",
"Pierre",
"Luc",
"Thomas"]
2) Pour vider totalement un tableau, on passe par la méthode empty :
var
mon_tableau =
new
Array
("
Jean
"
,
"
Mathieu
"
,
"
Pierre
"
,
"
Luc
"
);
mon_tableau =
mon_tableau.
empty
();
//
Résultats
:
mon_tableau
=
[]
Je vais parler ici de méthodes qui sont fournies pour les navigateurs qui n'implémentent pas le JavaScript 1.6.
1) La méthode every permet de vérifier une condition sur
toutes les occurrences d'un tableau. Si la condition est à chaque fois vérifiée,
la méthode renvoie true, sinon elle renvoie false.
L'exemple le plus courant est de vérifier si les valeurs sont assez grandes :
var
assez_grand =
[
10
,
4
,
25
,
100
]
.
every
(function
(item,
index){
return
item >
20
;
//
Pour
chaque
valeur,
on
vérifie
qu'elle
est
supérieure
à
20
}
);
//
assez_grand
=
false
var
assez_grand =
[
21
,
31
,
25
,
100
]
.
every
(function
(item,
index){
return
item >
20
;
//
Pour
chaque
valeur,
on
vérifie
qu'elle
est
supérieure
à
20
}
);
//
assez_grand
=
true
2) Cependant, il arrive qu'on veuille simplement savoir si au moins une des
valeurs respecte la condition. Dans ce cas-là, il y a la méthode some
qui renvoi true lorsqu'elle trouve une valeur qui satisfait à la
condition :
var
assez_grand =
[
10
,
4
,
25
,
100
]
.
some
(function
(item,
index){
return
item >
20
;
//
On
ne
prend
que
les
valeurs
supérieures
à
20
}
);
//
assez_grand
=
true;
3) Mais parfois, on désire récupérer simplement les valeurs qui vérifient la
condition. On utilise alors la méthode filter. Cette méthode renvoie
un tableau avec les valeurs qui ont respecté une condition :
var
assez_grand =
[
10
,
4
,
25
,
100
]
.
filter
(function
(item,
index){
return
item >
20
;
//
On
ne
prend
que
les
valeurs
supérieures
à
20
}
);
//
assez_grand
=
[25,
100];
Lien : Comment appliquer une fonction à tous les éléments d'un tableau ?
Pour une raison ou une autre, il se peut que l'on désire obtenir un élément au hasard du tableau. La méthode effective porte le nom de getRandom et renvoie un élément au hasard :
var
mon_tableau =
new
Array
(1
,
2
,
3
,
4
,
5
);
var
chiffre_aleatoire =
mon_tableau.
getRandom
();
Tandis que si l'on veut assurément le dernier élément du tableau, on se servira
de la méthode getLast() :
var
mon_tableau =
new
Array
(1
,
2
,
3
,
4
,
5
);
var
dernier_chiffre =
mon_tableau.
getLast
();
//
Résultat
:
dernier_chiffre
=
5
Si l'on désire ajouter un élément dans un tableau tout en évitant les doublons, on utilise la méthode include qui n'ajoutera l'élément dans le tableau que s'il ne s'y trouve pas déjà. Elle renvoie le tableau avec les anciennes et les nouvelles valeurs :
var
mon_tableau =
new
Array
("
Un
"
,
"
Deux
"
,
"
Quatre
"
);
mon_tableau =
mon_tableau.
include
("
Trois
"
);
mon_tableau =
mon_tableau.
include
("
Quatre
"
);
//
Résultat
:
mon_tableau
=
["Un",
"Deux",
"Trois",
"Quatre"]
MooTools propose la fonction clone de Array qui fait une copie conforme du tableau passé en paramètre :
var
mon_tableau =
new
Array
("
Truc
"
,
"
Bidule
"
,
"
Machin
"
,
"
Chose
"
);
var
copie_mon_tableau =
Array
.
clone
(mon_tableau);
//
Résultat
:
copie_mon_tableau=
["Truc",
"Bidule",
"Machin",
"Chose"];
[Obsolète]
Les versions 1.1 et 1.2 utilisent la fonction $A :
var
mon_tableau =
new
Array
("
Truc
"
,
"
Bidule
"
,
"
Machin
"
,
"
Chose
"
);
var
copie_mon_tableau =
$A
(mon_tableau);
//
Résultat
:
copie_mon_tableau=
["Truc",
"Bidule",
"Machin",
"Chose"];