TypedArray.prototype.set / subarray în JavaScript

set copiază valori într-un typed array; subarray creează o vedere asupra unei bucăți, fără copiere.

Sintaxă
typedArray.set(sursa, pozitie)
typedArray.subarray(inceput, sfarsit)

Ce face TypedArray.prototype.set / subarray

set scrie valorile din alt tablou (obișnuit sau typed) începând de la poziția dată. Este modul rapid de a lipi mai multe bucăți binare într-una singură. Dacă datele nu încap, aruncă RangeError.

subarray returnează un typed array nou care folosește aceeași memorie ca originalul. Spre deosebire de slice, care copiază, modificările făcute în subarray se văd în original.

Parametri

Parametru Descriere
sursa, pozitie Pentru set: tabloul copiat și poziția de început (implicit 0).
inceput, sfarsit Pentru subarray: limitele bucății (sfârșitul este exclus).

Ce returnează

set: undefined. subarray: un typed array nou, cu memorie comună.

Exemple

Exemplul 1: Lipirea a două bucăți

const antet = new Uint8Array([0x89, 0x50]);
const date = new Uint8Array([1, 2, 3]);
const tot = new Uint8Array(antet.length + date.length);

tot.set(antet);
tot.set(date, antet.length);
console.log(tot);

Rezultat

Uint8Array(5) [ 137, 80, 1, 2, 3 ]

Exemplul 2: subarray partajează memoria, slice nu

const original = new Uint8Array([1, 2, 3, 4, 5]);
const vedere = original.subarray(1, 3);
const copie = original.slice(1, 3);

vedere[0] = 99;
copie[1] = 77;
console.log(original);

Rezultat

Uint8Array(5) [ 1, 99, 3, 4, 5 ]

Greșeli frecvente

  • Folosești subarray crezând că ai o copie și modifici datele originale fără să vrei. Pentru o copie independentă folosește slice.

Comenzi înrudite

  • Typed arrays (Uint8Array, Float64Array...): Tablouri de lungime fixă cu numere de un singur tip, pentru date binare: imagini, fișiere, audio, rețea.
  • ArrayBuffer: Un bloc de memorie brută, de lungime dată în octeți; citit și scris prin typed arrays sau DataView.
  • Array.prototype.copyWithin: Copiază o bucată din tablou peste altă poziție din același tablou, fără să schimbe lungimea.