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
subarraycrezând că ai o copie și modifici datele originale fără să vrei. Pentru o copie independentă foloseșteslice.
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.