Visit Mozilla.org

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ébut indique 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. slice extrait jusqu'à cet indice, mais pas l'élément situé en fin lui-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, fin indique 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 fin n'est pas fourni, slice extraira 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), slice copie 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 String et Number), slice copie 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