Référence de JavaScript 1.5 Core:Objets globaux:Array:slice
Un article de MDC.
Sommaire |
[modifier] Résumé
Extrait une section d'un tableau et la renvoie dans un nouveau tableau.
| Méthode de Array | |
| Implémentation : | JavaScript 1.2, NES 3.0 |
| Version ECMA : | ECMA-262 Edition 3 |
[modifier] Syntaxe
slice(début[,fin]);
[modifier] Paramètres
-
début - Indice (à partir de zéro) depuis lequel commencer l'extraction.
- S'il s'agit d'un indice négatif,
débutindique un décalage depuis la fin de la séquence.slice(-2)extrait les avant-dernier et dernier éléments dans la séquence.
-
fin - Indice (à partir de zéro) auquel arrêter l'extraction.
sliceextrait jusqu'à cet indice, mais pas l'élément situé enfinlui-même. -
slice(1,4)extrait du deuxième au quatrième élément (les éléments d'indices 1, 2 et 3). - S'il s'agit d'un indice négatif,
finindique un décalage depuis la fin de la séquence.slice(2,-1)extrait du troisième à l'avant-dernier élément dans la séquence. - Si
finn'est pas fourni,sliceextraira jusqu'à la fin de la séquence.
[modifier] Description
slice ne modifie pas le tableau original, mais renvoie une nouvelle copie « à un niveau de profondeur » contenant des copies des éléments extraits du tableau original. Les éléments du tableau original sont copiés dans le nouveau tableau de la manière suivante :
- Pour les références à des objets (et non les objets eux-mêmes),
slicecopie ces références dans le nouveau tableau. Tant l'original que le nouveau tableau font référence au même objet. Si un objet référencé est modifié, ces changements sont visibles tant pour le nouveau que pour le tableau original.
- Pour les chaînes et les nombres (pas les objets
StringetNumber),slicecopie ces chaînes et ces nombres dans le nouveau tableau. Les modifications sur ces chaînes ou nombres dans l'un des tableaux n'affectent pas l'autre tableau.
Si un nouvel élément est ajouté à l'un ou l'autre tableau, le second n'est pas affecté.
[modifier] Exemples
[modifier] Exemple : utilisation de slice
Dans l'exemple qui suit, slice crée un nouveau tableau, nouvelleVoiture, à partir de maVoiture. Chacun d'entre-eux contient une référence à l'objet maHonda. Lorsque la couleur de maHonda est changée en bordeaux, les deux tableaux reflètent ce changement.
// Avec slice, crée nouvelleVoiture depuis maVoiture
var maHonda = { couleur : "rouge", roues : 4, moteur : { cylindres : 4, capacité : 2.2 } };
var maVoiture = [maHonda, 2, "excellente condition", "achetée en 1997"];
var nouvelleVoiture = maVoiture.slice(0, 2);
// Affiche les valeurs de maVoiture, nouvelleVoiture et la couleur de maHonda
// référencées depuis chacun des tableaux.
print("maVoiture = " + maVoiture.toSource());
print("nouvelleVoiture = " + nouvelleVoiture.toSource());
print("maVoiture[0].couleur = " + maVoiture[0].couleur);
print("nouvelleVoiture[0].couleur = " + nouvelleVoiture[0].couleur);
// Change la couleur de maHonda.
maHonda.couleur = "bordeaux";
print("La nouvelle couleur de ma Honda est " + maHonda.couleur);
// Affiche la couleur de maHonda référencées depuis les deux tableaux.
print("maVoiture[0].couleur = " + maVoiture[0].couleur);
print("nouvelleVoiture[0].couleur = " + nouvelleVoiture[0].couleur);
Ce script affichera :
maVoiture = [{couleur:"red", roues:4, moteur:{cylindres:4, capacité:2.2}}, 2, "excellente condition", "achetée en 1997"]
nouvelleVoiture = [{couleur:"rouge", roues:4, moteur:{cylindres:4, capacité:2.2}}, 2]
maVoiture[0].couleur = rouge
nouvelleVoiture[0].couleur = rouge
La nouvelle couleur de ma Honda est bordeaux
maVoiture[0].couleur = bordeaux
nouvelleVoiture[0].couleur = bordeaux