JavaScript - L'objet TypedArray

Salut à toi, future vedette du codage ! ? Aujourd'hui, nous allons entreprendre un voyage passionnant à travers le monde des TypedArrays en JavaScript. Ne t'inquiète pas si tu es nouveau dans le monde de la programmation - je serai ton guide amical, et nous avancerons pas à pas. Alors, prends ta boisson favorite, installe-toi confortablement, et plongeons dedans !

JavaScript - TypedArray

Qu'est-ce qu'un TypedArray ?

Imagines que tu organises une grande fête (qui n'aime pas une bonne fête, hein ?). Tu dois garder une trace du nombre de verres, de plats et d'ustensiles que tu as. C'est un peu ce que fait un TypedArray en JavaScript - il nous aide à organiser et à stocker efficacement des types de données spécifiques.

Un TypedArray est un type spécial de tableau en JavaScript qui ne peut contenir que des nombres d'un type spécifique. C'est comme avoir des boîtes séparées pour tes fourchettes, cuillères et couteaux au lieu de les jeter tous dans un grand tiroir.

// Création d'un TypedArray de целых чисел 8 bits
const monTableau = new Int8Array(5);
console.log(monTableau); // Sortie : Int8Array(5) [0, 0, 0, 0, 0]

Dans cet exemple, nous avons créé un TypedArray qui peut contenir cinq entiers 8 bits. C'est comme préparer cinq petites boîtes, chacune pouvant contenir un nombre entre -128 et 127.

Pourquoi utiliser un TypedArray ?

Tu te demandes peut-être : "Pourquoi se soucier des TypedArrays alors que nous avons des tableaux réguliers ?" Excellent pregunta ! Les TypedArrays ont quelques superpuissances qui les rendent parfaits pour certaines situations :

  1. Vitesse : Ils sont plus rapides pour les opérations numériques.
  2. Effet mémoire : Ils utilisent une quantité fixe de mémoire.
  3. Compatibilité : Ils s'entendent bien avec les données binaires et d'autres langages.

C'est comme utiliser un outil spécialisé au lieu d'un couteau suisse - parfois, tu as besoin de ce ajustement parfait !

Objets TypedArray

JavaScript offre divers types de TypedArrays, chacun conçu pour des types de nombres et des tailles différents. Jetons un coup d'œil à eux dans un joli tableau bien organisé :

TypedArray Description Plage
Int8Array Entier signé 8 bits -128 à 127
Uint8Array Entier non signé 8 bits 0 à 255
Int16Array Entier signé 16 bits -32,768 à 32,767
Uint16Array Entier non signé 16 bits 0 à 65,535
Int32Array Entier signé 32 bits -2,147,483,648 à 2,147,483,647
Uint32Array Entier non signé 32 bits 0 à 4,294,967,295
Float32Array Nombre à virgule flottante 32 bits ~1.2E-38 à ~3.4E+38
Float64Array Nombre à virgule flottante 64 bits ~5.0E-324 à ~1.8E+308

Whaou, c'est une liste impressionnante ! Ne t'inquiète pas si c'est accablant - nous utiliserons des exemples pour clarifier tout cela.

Propriétés des TypedArrays

Les TypedArrays possèdent quelques propriétés pratiques. Explorons-les :

1. length

Cette propriété nous indique combien d'éléments sont dans notre TypedArray.

const monTableau = new Int16Array(3);
console.log(monTableau.length); // Sortie : 3

2. BYTES_PER_ELEMENT

Cette propriété nous indique combien d'octets chaque élément dans le tableau occupe.

console.log(Int8Array.BYTES_PER_ELEMENT); // Sortie : 1
console.log(Int16Array.BYTES_PER_ELEMENT); // Sortie : 2

C'est comme savoir combien de place chaque boîte occupe dans notre système de stockage !

Méthodes statiques des TypedArrays

Les TypedArrays possèdent quelques méthodes intégrées que nous pouvons utiliser sans créer une instance. Jetons un coup d'œil à deux d'entre elles :

1. TypedArray.from()

Cette méthode crée un nouveau TypedArray à partir d'un objet similaire à un tableau.

const tableauRegulier = [1, 2, 3, 4];
const tableauTypé = Int8Array.from(tableauRegulier);
console.log(tableauTypé); // Sortie : Int8Array(4) [1, 2, 3, 4]

C'est comme convertir notre tiroir à outils mélangés en boîtes organisées !

2. TypedArray.of()

Cette méthode crée un nouveau TypedArray avec un nombre variable d'arguments.

const monTableau = Int16Array.of(1, 2, 3, 4, 5);
console.log(monTableau); // Sortie : Int16Array(5) [1, 2, 3, 4, 5]

C'est comme dire : "Voici les éléments, organize-les pour moi !"

Méthodes d'instance des TypedArrays

Maintenant, examinons quelques méthodes que nous pouvons utiliser sur nos instances de TypedArray :

1. set()

Cette méthode nous permet de copier des valeurs dans notre TypedArray.

const monTableau = new Int8Array(5);
monTableau.set([1, 2, 3]);
console.log(monTableau); // Sortie : Int8Array(5) [1, 2, 3, 0, 0]

C'est comme mettre des éléments dans nos boîtes organisées.

2. subarray()

Cette méthode renvoie un nouveau TypedArray qui est une portion de l'original.

const tableauOriginal = new Int8Array([1, 2, 3, 4, 5]);
const sousTableau = tableauOriginal.subarray(1, 4);
console.log(sousTableau); // Sortie : Int8Array(3) [2, 3, 4]

C'est comme prendre quelques boîtes de notre système de stockage pour une tâche spécifique.

Exemples

Mettons tout ce savoir ensemble avec quelques exemples pratiques !

Exemple 1 : Créer et modifier un TypedArray

// Créer un TypedArray d'entiers non signés 8 bits
const donnéesPixel = new Uint8Array(4);

// Définir les valeurs RVBA pour un pixel (Rouge : 255, Vert : 128, Bleu : 64, Alpha : 255)
donnéesPixel[0] = 255; // Rouge
donnéesPixel[1] = 128; // Vert
donnéesPixel[2] = 64;  // Bleu
donnéesPixel[3] = 255; // Alpha (complètement opaque)

console.log(donnéesPixel); // Sortie : Uint8Array(4) [255, 128, 64, 255]

Dans cet exemple, nous utilisons un Uint8Array pour représenter les valeurs de couleur d'un pixel. Chaque valeur est comprise entre 0 et 255, parfait pour des entiers non signés 8 bits !

Exemple 2 : Utiliser les TypedArrays pour la performance

const taille = 1000000;

// Utiliser un tableau régulier
console.time('Tableau régulier');
const tableauRegulier = new Array(taille);
for (let i = 0; i < taille; i++) {
tableauRegulier[i] = i;
}
console.timeEnd('Tableau régulier');

// Utiliser un TypedArray
console.time('TypedArray');
const tableauTypé = new Int32Array(taille);
for (let i = 0; i < taille; i++) {
tableauTypé[i] = i;
}
console.timeEnd('TypedArray');

Exécute ce code, et tu verras probablement que le TypedArray est plus rapide ! C'est comme avoir un système de stockage bien organisé versus jeter tout dans un grand tas.

Et voilà, les amis ! Nous avons fait un voyage à travers le territoire des TypedArrays, de la compréhension de ce qu'ils sont à les voir en action. Souviens-toi, la pratique rend parfait, alors n'hésite pas à expérimenter avec ces concepts.

Avant de savoir, tu seras des maîtres des TypedArrays, optimisant ton code et impressionnant tes collègues développeurs. Jusqu'à la prochaine fois, bon codage ! ??‍??‍?

Credits: Image by storyset