JavaScript - L'oggetto TypedArray
Ciao there, futuri superstar del coding! ? Oggi ci imbarcheremo in un viaggio emozionante nel mondo degli TypedArrays in JavaScript. Non preoccuparti se sei nuovo alla programmazione - sarò la tua guida amichevole, e prenderemo tutto passo per passo. Quindi, prenditi la tua bevanda preferita, mettiti comodo, e tuffiamoci!
Cos'è un TypedArray?
Immagina di organizzare una grande festa (chi non adora una buona festa, vero?). Devi tenere traccia di quanti bicchieri, piatti e posate hai. Un TypedArray in JavaScript fa più o meno la stessa cosa - ci aiuta a organizzare e conservare efficientemente tipi di dati specifici.
Un TypedArray è un tipo speciale di array in JavaScript che può contenere solo numeri di un tipo specifico. È come avere scatole separate per le forchette, le cucchiai e i coltelli invece di gettarli tutti in un grande cassetto.
// Creazione di un TypedArray di interi a 8 bit
const myArray = new Int8Array(5);
console.log(myArray); // Output: Int8Array(5) [0, 0, 0, 0, 0]
In questo esempio, abbiamo creato un TypedArray che può contenere cinque interi a 8 bit. È come impostare cinque piccole scatole, ciascuna capace di contenere un numero tra -128 e 127.
Perché TypedArray?
Potresti chiederti, "Perché preoccuparsi di TypedArrays quando abbiamo già array regolari?" Ottima domanda! Gli TypedArrays hanno alcuni superpoteri che li rendono perfetti per certe situazioni:
- Velocità: Sono più veloci per le operazioni numeriche.
- Efficienza della memoria: Utilizzano una quantità fisso di memoria.
- Compatibilità: Si integrano bene con i dati binari e altre lingue.
È come usare uno strumento specializzato invece di un coltello svizzero - a volte, hai bisogno di quel perfetto adattamento!
Oggetti TypedArray
JavaScript offre vari tipi di TypedArrays, ciascuno progettato per tipi di numeri e dimensioni diversi. Ecco un bel elenco organizzato:
TypedArray | Descrizione | Intervallo |
---|---|---|
Int8Array | Intero a 8 bit con segno | -128 a 127 |
Uint8Array | Intero a 8 bit senza segno | 0 a 255 |
Int16Array | Intero a 16 bit con segno | -32,768 a 32,767 |
Uint16Array | Intero a 16 bit senza segno | 0 a 65,535 |
Int32Array | Intero a 32 bit con segno | -2,147,483,648 a 2,147,483,647 |
Uint32Array | Intero a 32 bit senza segno | 0 a 4,294,967,295 |
Float32Array | Numero a virgola mobile a 32 bit | Circa 1.2E-38 a circa 3.4E+38 |
Float64Array | Numero a virgola mobile a 64 bit | Circa 5.0E-324 a circa 1.8E+308 |
Wow, è una lista impressionante! Non preoccuparti se sembra schiacciante - useremo esempi per rendere tutto chiaro.
Proprietà di TypedArray
Gli TypedArrays vengono forniti con alcune proprietà utili. Esploriamole:
1. length
Questa proprietà ci dice quanti elementi ci sono nel nostro TypedArray.
const myArray = new Int16Array(3);
console.log(myArray.length); // Output: 3
2. BYTES_PER_ELEMENT
Questa proprietà ci dice quanti byte ogni elemento nell'array occupa.
console.log(Int8Array.BYTES_PER_ELEMENT); // Output: 1
console.log(Int16Array.BYTES_PER_ELEMENT); // Output: 2
È come sapere quanto grande è ogni scatola nel nostro sistema di archiviazione!
Metodi statici di TypedArray
Gli TypedArrays vengono forniti con alcuni metodi integrati che possiamo utilizzare senza creare un'istanza. Ecco un paio di esempi:
1. TypedArray.from()
Questo metodo crea un nuovo TypedArray da un oggetto simile a un array.
const regularArray = [1, 2, 3, 4];
const typedArray = Int8Array.from(regularArray);
console.log(typedArray); // Output: Int8Array(4) [1, 2, 3, 4]
È come convertire il nostro cassetto di utensili misti in scatole organizzate!
2. TypedArray.of()
Questo metodo crea un nuovo TypedArray con un numero variabile di argomenti.
const myArray = Int16Array.of(1, 2, 3, 4, 5);
console.log(myArray); // Output: Int16Array(5) [1, 2, 3, 4, 5]
È come dire, "Ecco gli oggetti, per favore organizzali per me!"
Metodi di istanza di TypedArray
Ora, esploriamo alcuni metodi che possiamo utilizzare sulle nostre istanze di TypedArray:
1. set()
Questo metodo ci permette di copiare valori nel nostro TypedArray.
const myArray = new Int8Array(5);
myArray.set([1, 2, 3]);
console.log(myArray); // Output: Int8Array(5) [1, 2, 3, 0, 0]
È come mettere oggetti nelle nostre scatole organizzate.
2. subarray()
Questo metodo restituisce un nuovo TypedArray che è una porzione dell'originale.
const originalArray = new Int8Array([1, 2, 3, 4, 5]);
const subArray = originalArray.subarray(1, 4);
console.log(subArray); // Output: Int8Array(3) [2, 3, 4]
È come prendere alcune scatole dal nostro sistema di archiviazione per un compito specifico.
Esempi
Mettiamo tutte queste conoscenze insieme con alcuni esempi pratici!
Esempio 1: Creare e modificare un TypedArray
// Creare un TypedArray di interi a 8 bit senza segno
const pixelData = new Uint8Array(4);
// Impostare i valori RGB per un pixel (Rosso: 255, Verde: 128, Blu: 64, Alpha: 255)
pixelData[0] = 255; // Rosso
pixelData[1] = 128; // Verde
pixelData[2] = 64; // Blu
pixelData[3] = 255; // Alpha (completamente opaco)
console.log(pixelData); // Output: Uint8Array(4) [255, 128, 64, 255]
In questo esempio, stiamo usando un Uint8Array per rappresentare i valori di colore di un pixel. Ogni valore è tra 0 e 255, perfetto per interi a 8 bit senza segno!
Esempio 2: Utilizzare TypedArrays per le prestazioni
const size = 1000000;
// Utilizzare array regolare
console.time('Array regolare');
const regularArray = new Array(size);
for (let i = 0; i < size; i++) {
regularArray[i] = i;
}
console.timeEnd('Array regolare');
// Utilizzare TypedArray
console.time('TypedArray');
const typedArray = new Int32Array(size);
for (let i = 0; i < size; i++) {
typedArray[i] = i;
}
console.timeEnd('TypedArray');
Eseguendo questo codice, è probabile che vedrai che il TypedArray è più veloce! È come avere un sistema di archiviazione ben organizzato rispetto a gettare tutto in un grande mucchio.
Eccoci, gente! Abbiamo viaggiato attraverso il paese degli TypedArrays, dalla comprensione di cosa sono fino a vederli in azione. Ricorda, la pratica fa la perfezione, quindi non aver paura di sperimentare con questi concetti.
Prima di sapere, sarai un mago degli TypedArrays, ottimizzando il tuo codice e impressionando i tuoi colleghi sviluppatori. Fino alla prossima volta, happy coding! ?????
Credits: Image by storyset