From 39f2114f9797eb51994966c6bb8ff1814c9a4da8 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 12:36:08 +0100 Subject: unslug fr: move --- .../global_objects/array/slice/index.html | 178 +++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 files/fr/web/javascript/reference/global_objects/array/slice/index.html (limited to 'files/fr/web/javascript/reference/global_objects/array/slice') diff --git a/files/fr/web/javascript/reference/global_objects/array/slice/index.html b/files/fr/web/javascript/reference/global_objects/array/slice/index.html new file mode 100644 index 0000000000..98dac60521 --- /dev/null +++ b/files/fr/web/javascript/reference/global_objects/array/slice/index.html @@ -0,0 +1,178 @@ +--- +title: Array.prototype.slice() +slug: Web/JavaScript/Reference/Objets_globaux/Array/slice +tags: + - Array + - JavaScript + - Méthode + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Array/slice +--- +
{{JSRef}}
+ +

La méthode slice() renvoie un objet tableau, contenant une copie superficielle (shallow copy) d'une portion du tableau d'origine, la portion est définie par un indice de début et un indice de fin (exclus). Le tableau original ne sera pas modifié.

+ +
{{EmbedInteractiveExample("pages/js/array-slice.html")}}
+ + + +

Syntaxe

+ +
arr.slice()
+arr.slice(début)
+arr.slice(début, fin)
+
+ +

Paramètres

+ +
+
début {{optional_inline}}
+
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. Par exemple, slice(-2) extrait les avant-dernier et dernier éléments dans la séquence.
+
+ Si début est absent, slice() commencera depuis 0. Si début est supérieur à la taille du tableau, c'est un tableau vide qui sera renvoyé.
+
+ +
+
fin {{optional_inline}}
+
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 (arr.length). Si fin est supérieur à la longueur de la séquence, slice() fera une extraction jusqu'à la fin de la séquence.
+
+ +

Valeur de retour

+ +

Un nouveau tableau contenant les éléments extraits.

+ +

Description

+ +

slice() ne modifie pas le tableau original, mais renvoie une nouvelle copie du tableau (shallow copy — copie superficielle) dont les éléments sont 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 :

+ + + +

Si un nouvel élément est ajouté à l'un ou l'autre tableau, le second n'est pas affecté.

+ +

Exemples

+ +

Renvoyer un fragment d'un tableau existant

+ +
var fruits = ["Banane", "Orange", "Citron", "Pomme", "Mangue"];
+var agrumes = fruits.slice(1, 3);
+
+// fruits vaut --> ["Banane", "Orange", "Citron", "Pomme", "Mangue"]
+// agrumes vaut --> ["Orange", "Citron"]
+ +

Utiliser 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.
+console.log("maVoiture = " + JSON.stringify(maVoiture));
+console.log("nouvelleVoiture = " + JSON.stringify(nouvelleVoiture));
+console.log("maVoiture[0].couleur = " + maVoiture[0].couleur);
+console.log("nouvelleVoiture[0].couleur = " + nouvelleVoiture[0].couleur);
+
+// Change la couleur de maHonda.
+maHonda.couleur = "bordeaux";
+console.log("La nouvelle couleur de ma Honda est " + maHonda.couleur);
+
+// Affiche la couleur de maHonda référencées depuis les deux tableaux.
+console.log("maVoiture[0].couleur = " + maVoiture[0].couleur);
+console.log("nouvelleVoiture[0].couleur = " + nouvelleVoiture[0].couleur);
+
+ +

Ce script affichera :

+ +
maVoiture = [{couleur:"rouge", 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
+
+ +

Utilisation avec les objets similaires aux tableaux

+ +

La méthode slice() peut aussi être appelée pour convertir des objets/collections similaires à des tableaux, en un nouveau tableau. L'objet {{jsxref("Fonctions/arguments", "arguments")}} d'une fonction est un exemple d'objet similaire à un tableau.

+ +
function list() {
+  return Array.prototype.slice.call(arguments, 0);
+}
+
+var list1 = list(1, 2, 3); // [1, 2, 3]
+
+ +

Il est possible de lier avec la fonction .call de {{jsxref("Function.prototype")}} et on peut effectuer la réduction avec [].slice.call(arguments) plutôt qu'avec Array.prototype.slice.call. Voici comment on peut simplifier avec {{jsxref("Function.prototype.bind", "bind")}} :

+ +
var unboundSlice = Array.prototype.slice;
+var slice = Function.prototype.call.bind(unboundSlice);
+
+function list() {
+  return slice(arguments, 0);
+}
+
+var list1 = list(1, 2, 3); // [1, 2, 3]
+
+ +

Spécifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('ES3')}}{{Spec2('ES3')}}Définition initiale. Implémentée avec JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.10', 'Array.prototype.slice')}}{{Spec2('ES5.1')}}
{{SpecName('ES6', '#sec-array.prototype.slice', 'Array.prototype.slice')}}{{Spec2('ES6')}}
{{SpecName('ESDraft', '#sec-array.prototype.slice', 'Array.prototype.slice')}}{{Spec2('ESDraft')}}
+ +

Compatibilité des navigateurs

+ +
+ + +

{{Compat("javascript.builtins.Array.slice")}}

+
+ +

Voir aussi

+ + -- cgit v1.2.3-54-g00ecf