La méthode slice() renvoie une copie superficielle (shallow copy) d'un fragment du tableau typé courant dans un nouveau tableau typé. Cette méthode utilise le même algorithme que Array.prototype.slice(). TypedArray est utilisé par la suite de façon générique pour réprésenter l'un des types de tableaux typés.

Syntaxe

typedarray.slice([début[, fin]])

Paramètres

début Facultatif
L'indice (compté à partir de zéro) à partir duquel commencer le fragment.
Si l'indice fourni est négatif, début indiquera le décalage par rapport à la fin de la séquence. Par exemple, slice(-2) extrait les deux derniers éléments de la séquence.
Par défaut, si début n'est pas utilisé, slice() commencera à partir de l'indice 0.
fin Facultatif
L'indice (compté à partir de zéro) jusqu'auquel extraire le fragment. Le fragment obtenu n'incluera pas l'élément situé à l'indice fin.
slice(1,4) extrait par exemple à partir du deuxième élément et jusqu'au quatrième (c'est-à-dire les éléments dont les indices respectifs sont 1, 2, et 3).
Si l'indice utilisé est négatif, fin indiquera le décalage par rapport à la fin de la séquence. Ainsi, slice(2,-1) extraira à partir du troisième élément et jusqu'à l'avant dernier élément (compris).
Par défaut, si fin n'est pas utilisé, slice() extraira les éléments jusqu'à la fin de la séquence (arr.length).

Valeur de retour

Un nouveau tableau typé qui contient les éléments extraits.

Description

La méthode slice() ne modifie pas le tableau typé courant, elle renvoie une copie superficielle (shallow copy) du tableau typé original.

Si un nouvel élément est ajouté à l'un des deux tableaux typés, l'autre ne sera pas impacté.

Exemples

Renvoyer un fragment d'un tableau typé existant

var uint8 = new Uint8Array([1,2,3]);
uint8.slice(1);   // Uint8Array [ 2, 3 ]
uint8.slice(2);   // Uint8Array [ 3 ]
uint8.slice(-2);  // Uint8Array [ 2, 3 ]
uint8.slice(0,1); // Uint8Array [ 1 ]

Prothèse d'émulation (polyfill)

Il n'existe pas d'objet global intitulé TypedArray, la prothèse doit donc uniquement être employée si nécessaire :

// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice
if (!Uint8Array.prototype.slice) {
  Object.defineProperty(Uint8Array.prototype, 'slice', {
    value: Array.prototype.slice
  });
}

De plus cette prothèse n'est pas parfaite car elle renvoie une instance d'Array et pas de Uint8Array. Elle manque donc des propriétés normalement associées aux objets TypedArray.

S'il faut également prendre en charge les moteurs JavaScript qui ne prennent pas en charge la méthode Object.defineProperty, mieux vaut ne pas ajouter de prothèse du tout pour TypedArray.prototype car on ne peut pas les rendre non-énumérables.

Spécifications

Spécification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de '%TypedArray%.prototype.slice' dans cette spécification.
Standard Définition initiale.
ECMAScript Latest Draft (ECMA-262)
La définition de '%TypedArray%.prototype.slice' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet 45Edge Support complet 14Firefox Support complet 38IE Aucun support NonOpera ? Safari ? WebView Android ? Chrome Android ? Edge Mobile ? Firefox Android Support complet 38Opera Android ? Safari iOS ? Samsung Internet Android ? nodejs Support complet 4.0.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,