HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
View in English Always switch to English
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
Un objet TypedArray décrit une vue organisée à la façon d'un tableau pour manipuler un tampon (buffer) de données binaires. TypedArray n'est pas une propriété globale, il n'existe pas non plus de constructeur TypedArray. En revanche, plusieurs propriétés globales existent et leurs valeurs permettent de construire des tableaux typés (typed arrays) avec différents types de données. Ceux-ci sont listés ci-après. Les pages suivantes permettent de décrire les propriétés et méthodes qui peuvent être utilisées sur les différents tableaux typés.
TypedArray
// Create a TypedArray with a size in bytes const typedArray1 = new Int8Array(8); typedArray1[0] = 32; const typedArray2 = new Int8Array(typedArray1); typedArray2[1] = 42; console.log(typedArray1); // Expected output: Int8Array [32, 0, 0, 0, 0, 0, 0, 0] console.log(typedArray2); // Expected output: Int8Array [32, 42, 0, 0, 0, 0, 0, 0]
ECMAScript 2015 (ES6) définit un constructeur %TypedArray% qui est un [[Prototype]] de tous les constructeurs TypedArray. Ce constructeur n'est pas accessible directement. Il n'existe pas de %TypedArray% global ou de propriété TypedArray. Il est uniquement accessible via Object.getPrototypeOf(Int8Array.prototype) ou avec les méthodes semblables. L'ensemble des différents constructeurs TypedArrays hérite de propriétés communes de la fonction %TypedArray%. De plus, tous les prototypes des tableaux typés (TypedArray.prototype) ont %TypedArray%.prototype pour [[Prototype]].
%TypedArray%
[[Prototype]]
Object.getPrototypeOf(Int8Array.prototype)
.prototype
%TypedArray%.prototype
Lorsqu'on crée une instance de TypedArray (par exemple, une instance de Int8Array ou autre), un tampon de mémoire tableau est créé en interne par le moteur (si un objet ArrayBuffer est passé en argument, c'est celui-ci qui est utilisé). C'est l'adresse de cette mémoire tampon qui est sauvegardée comme une propriété interne à l'objet. Toutes les méthodes de %TypedArray%.prototype utiliseront ensuite cet espace pour les opérations.
Int8Array
ArrayBuffer
-128
127
byte
int8_t
Uint8Array
0
255
octet
uint8_t
Uint8ClampedArray
Int16Array
-32768
32767
short
int16_t
Uint16Array
65535
unsigned short
uint16_t
Int32Array
-2147483648
2147483647
long
int32_t
Uint32Array
4294967295
unsigned long
uint32_t
Float32Array
-3.4E38
3.4E38
1.2E-38
1.234567
unrestricted float
float
Float64Array
-1.8E308
1.8E308
5E-324
1.23456789012345
unrestricted double
double
BigInt64Array
-2^63
2^63 - 1
bigint
int64_t (signed long long)
BigUint64Array
2^64 - 1
uint64_t (unsigned long long)
Cet objet ne peut pas être instancié directement. On créera plutôt une instance d'un tableau typé d'un type donné, tel que Int8Array ou BigInt64Array. Ces différents types partagent une syntaxe commune pour leur constructeur :
new TypedArray(); new TypedArray(longueur); new TypedArray(tableauType); new TypedArray(objet); new TypedArray(buffer); new TypedArray(buffer, decalageOctet); new TypedArray(buffer, decalageOctet, longueur);
Où TypedArray est un constructeur donné pour un type de tableau typé existant.
longueur
Lorsque le constructeur est appelé avec un argument longueur, un tampon de mémoire interne sous forme de tableau est créé et dont la taille est longueur multipliée par BYTES_PER_ELEMENT octets. Chaque élément du tableau contient des zéros.
BYTES_PER_ELEMENT
tableauType
Lorsque le constructeur est appelé avec un argument tableauType, tableauType est copié dans un nouveau tableau typé. Pour un tableay typé dont le type n'est pas BigInt64Array, le paramètre peut être un objet de n'importe quel type de tableau typé en dehors de BigInt64Array (par exemple Int32Array). L'inverse est aussi valable, pour obtenir un tableau typé BigInt64Array, le paramètre devra nécessairement être de type BigInt64Array. Chaque valeur contenue dans tableauType est convertie dans le type correspondant au constructeur avant d'être copiée dans le nouveau tableau. La longueur du nouveau tableau typé sera la même que celle de l'argument tableauType.
objet
Lorsque le constructeur est appelé avec un objet comme argument, un nouveau tableau typé est créé à la façon de la méthode TypedArray.from().
TypedArray.from()
buffer
decalageOctet
Lorsque le constructeur est appelé avec un tampon de mémoire buffer, et éventuellement des arguments decalageOctet et longueur, une nouvelle vue sous la formule d'un tableau typé est créé sur l'objet ArrayBuffer porté par le premier argument. Les paramètres decalageOctet et longueur indique l'intervalle de mémoire exposée à la vue du tableau typé. Si les deux paramètres sont absents, c'est tout le tampon qui est vu. Si seul le paramètre longueur est absent, c'est le reste du tampon qui est vu (à partir de decalageOctet).
TypedArray.BYTES_PER_ELEMENT
Renvoie un nombre indiquant la taille, exprimée en octets, de chaque élément du tableau typé.
TypedArray.name
Renvoie la chaîne de caractères correspondant au nom du constructeur (par exemple, "Int8Array").
"Int8Array"
get TypedArray[@@species]
La fonction de construction utilisée pour créer des objets dérivés.
Le prototype pour les objes TypedArray.
Crée un nouveau tableau typé à partir d'un objet itérable ou semblable à un tableau. Voir aussi Array.from().
Array.from()
TypedArray.of()
Crée un nouveau tableau typé avec un nombre variable d'arguments. Voir aussi Array.of().
Array.of()
TypedArray.prototype.buffer
Renvoie l'objet ArrayBuffer référencé par le tableau typé. Il est déterminé au moment de la construction et est donc uniquement accessible en lecture seule.
TypedArray.prototype.byteLength
Renvoie la longueur, exprimée en octets, du tableau typé. Elle est déterminée au moment de la construction et est donc uniquement accessible en lecture seule.
TypedArray.prototype.byteOffset
Renvoie le décalage, exprimé en octet, de la vue fournie par le tableau typé par rapport au début de l'objet ArrayBuffer correspondant. Il est déterminé au moment de la construction et est donc uniquement accessible en lecture seule.
TypedArray.prototype.length
Renvoie le nombre d'éléments contenus dans le tableau typé. Il est déterminé au moment de la construction et est donc uniquement accessible en lecture seule.
TypedArray.prototype.at()
Prend une valeur entière comme argument et renvoie l'élément situé à cet indice. Il est possible d'utiliser des indices négatifs, le tableau est alors parcouru depuis la fin.
TypedArray.prototype.copyWithin()
Copie une suite d'éléments de tableau dans le tableau typé. Voir aussi Array.prototype.copyWithin().
Array.prototype.copyWithin()
TypedArray.prototype.entries()
Renvoie un nouvel objet itérateur de tableau qui contient les paires de clé/valeur pour chaque indice du tableau. Voir aussi Array.prototype.entries().
Array.prototype.entries()
TypedArray.prototype.every()
Teste si l'ensemble des éléments du tableau valident le test fourni par la fonction passée en argument. Voir aussi Array.prototype.every().
Array.prototype.every()
TypedArray.prototype.fill()
Remplit l'ensemble des éléments du tableau situés entre un indice de début et un indice de fin avec une valeur statique. Voir aussi Array.prototype.fill().
Array.prototype.fill()
TypedArray.prototype.filter()
Crée un nouveau tableau avec l'ensemble des éléments du tableau pour lesquels la fonction passée en argument renvoi true. Voir aussi Array.prototype.filter().
true
Array.prototype.filter()
TypedArray.prototype.find()
Renvoie la valeur trouvée dans le tableau si un élément du tableau satisfait au critère fourni par la fonction passée en argument, ou undefined s'il n'existe pas de tel élément. Voir aussi Array.prototype.find().
undefined
Array.prototype.find()
TypedArray.prototype.findIndex()
Renvoie l'indice d'un élément du tableau qui satisfait au critère fourni par la fonction passée en argument ou -1 s'il n'existe pas de tel élément. Voir aussi Array.prototype.findIndex().
-1
Array.prototype.findIndex()
TypedArray.prototype.forEach()
Appelle une fonction pour chaque élément du tableau. Voir aussi Array.prototype.forEach().
Array.prototype.forEach()
TypedArray.prototype.includes()
Détermine si un tableau typé inclut un certain élément, renvoyant true ou false selon le cas de figure. Voir aussi Array.prototype.includes().
false
Array.prototype.includes()
TypedArray.prototype.indexOf()
Renvoie le plus petit indice d'un élément du tableau qui est égal à la valeur fournie en argument, ou -1 si aucun élément n'est trouvé. Voir aussi Array.prototype.indexOf().
Array.prototype.indexOf()
TypedArray.prototype.join()
Fusionne l'ensemble des éléments du tableau en une chaîne de caractères. Voir aussi Array.prototype.join().
Array.prototype.join()
TypedArray.prototype.keys()
Renvoie un nouvel itérateur de tableau qui contient les clés pour chaque indice du tableau. Voir aussi Array.prototype.keys().
Array.prototype.keys()
TypedArray.prototype.lastIndexOf()
Renvoie le plus grand indice d'un élément du tableau qui est égal à la valeur fournie, ou -1 s'il n'y a pas de tel élément. Voir aussi Array.prototype.lastIndexOf().
Array.prototype.lastIndexOf()
TypedArray.prototype.map()
Crée un nouveau tableau dont les éléments sont les résultats de l'appel de la fonction passée en argument pour chaque élément du tableau original. Voir aussi Array.prototype.map().
Array.prototype.map()
TypedArray.prototype.reduce()
Applique une fonction avec un accumulateur pour chaque valeur du tableau (de gauche à droite), afin de le réduire à une seule valeur. Voir aussi Array.prototype.reduce().
Array.prototype.reduce()
TypedArray.prototype.reduceRight()
Applique une fonction avec un accumulateur pour chaque valeur du tableau (de droite à gauche), afin de le réduire à une seule valeur. Voir aussi Array.prototype.reduceRight().
Array.prototype.reduceRight()
TypedArray.prototype.reverse()
Inverse l'ordre des éléments d'un tableau (le premier devenant le dernier, le dernier devenant le premier et ainsi de suite). Voir aussi Array.prototype.reverse().
Array.prototype.reverse()
TypedArray.prototype.set()
Enregistre plusieurs valeurs dans le tableau typé à partir d'un tableau de valeurs donné.
TypedArray.prototype.slice()
Extrait une section d'un tableau et renvoie un nouveau tableau. Voir aussi Array.prototype.slice().
Array.prototype.slice()
TypedArray.prototype.some()
Renvoie true si au moins un des éléments du tableau satisfait au critère fourni par la fonction passée en argument. Voir aussi Array.prototype.some().
Array.prototype.some()
TypedArray.prototype.sort()
Trie les éléments du tableau à même le tableau puis le renvoie. Voir aussi Array.prototype.sort().
Array.prototype.sort()
TypedArray.prototype.subarray()
Renvoie un nouveau tableau typé avec les éléments contenus entre un indice de début et un indice de fin.
TypedArray.prototype.values()
Renvoie un nouvel objet itérateur de tableau qui contient les valeurs pour chaque indice du tableau. Voir aussi Array.prototype.values().
Array.prototype.values()
TypedArray.prototype.toLocaleString()
Renvoie une chaîne de caractères localisée qui représente le tableau et ses éléments. Voir aussi Array.prototype.toLocaleString().
Array.prototype.toLocaleString()
TypedArray.prototype.toString()
Renvoie une chaîne de caractères représentant le tableau et ses éléments. Voir aussi Array.prototype.toString().
Array.prototype.toString()
TypedArray.prototype[@@iterator]()
Renvoie un nouvel objet itérateur de tableau qui contient les valeurs pour chaque indice du tableau.
new
À partir d'ECMAScript 2015, les constructeurs TypedArray doivent être appelés avec l'opérateur new. Appeler un tel constructeur comme fonction, sans new, déclenchera une exception TypeError.
TypeError
let dv = Int8Array([1, 2, 3]); // TypeError: calling a builtin Int8Array constructor // without new is forbidden
let dv = new Int8Array([1, 2, 3]);
Il est possible d'accéder aux éléments du tableau en utilisant la notation usuelle avec les crochets. Cependant, définir ou accéder à des propriétés indexées ne se fera pas avec la chaîne de prototypes, même si l'indice utilisé est en dehors des limites du tableau. Les propriétés indexées seront uniquement basées sur le contenu du ArrayBuffer et ne consulteront pas les propriétés des objets. En revanche, il est toujours possible d'utiliser des propriétés nommées, comme avec les autres objets.
// Définir et accéder du contenu avec la syntaxe usuelle let int16 = new Int16Array(2); int16[0] = 42; console.log(int16[0]); // 42 // Les propriétés indexées sur les prototypes ne sont pas consultées Int8Array.prototype[20] = "toto"; new Int8Array(32)[20]; // 0 // y compris en dehors des limites Int8Array.prototype[20] = "toto"; new Int8Array(8)[20]; // undefined // ou avec des index négatifs Int8Array.prototype[-1] = "toto"; new Int8Array(8)[-1]; // undefined // Mais il est possible d'utiliser des propriétés nommées Int8Array.prototype.toto = "truc"; new Int8Array(32).toto; // "truc"
Les tableaux typés qui ne sont pas vides ne peuvent pas être gelés, car le tampon de mémoire ArrayBuffer sous-jacent pourrait être modifié via une autre vue fournie par un autre tableau typé sur ce même tampon. En pratique, cela voudrait dire que l'objet n'est pas réellement gelé.
const i8 = Int8Array.of(1, 2, 3); Object.freeze(i8); // TypeError: Cannot freeze array buffer views with elements
Lors de la construction d'un objet TypedArray comme une vue sur un tampon ArrayBuffer, l'argument decalageOctet doit être aligné par rapport à la taille des éléments. Autrement dit, le décalage fourni doit être un multiple de BYTES_PER_ELEMENT.
const i32 = new Int32Array(new ArrayBuffer(4), 1); // RangeError: start offset of Int32Array should be a multiple of 4
const i32 = new Int32Array(new ArrayBuffer(4), 0);
byteLength
À l'instar du paramètre decalageOctet, la propriété byteLength d'un objet ArrayBuffer passé au constructeur TypedArray doit être un multiple de la valeur BYTES_PER_ELEMENT correspondant au type du constructeur.
const i32 = new Int32Array(new ArrayBuffer(3)); // RangeError: byte length of Int32Array should be a multiple of 4
const i32 = new Int32Array(new ArrayBuffer(4));
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
core-js
DataView