JavaScript ArrayBuffer.slice() — копія частини буфера
Метод slice() повертає новий буфер із копією байтів у заданому діапазоні.
Загальний опис
Ключове слово — копія. Змінивши новий буфер, ти не зачепиш оригінал: це різна пам'ять.
Саме цим slice() відрізняється від subarray() типізованих масивів — той віддає вікно в ту саму пам'ять, без копіювання. На великих даних різниця відчутна: копіювання коштує часу й пам'яті, вікно — ні.
Від'ємні індекси працюють як у масивів — рахуються з кінця.
автор: NagarD
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| slice | 7+ | 4+ | 5.1+ | 11.6+ | 12+ | 10+ |
| Переглядач | ||||
|---|---|---|---|---|
| slice | 4+ | yes | yes | 4.2+ |
Приклади
+ запропонувати свій приклад у пісочниці
Копія, а не вікно — оригінал лишається цілим.
const buffer = new ArrayBuffer(8);
new Uint8Array(buffer).set([1, 2, 3, 4, 5, 6, 7, 8]);
// НОВА пам'ять — копія байтів 2..5
const part = buffer.slice(2, 5);
console.log(new Uint8Array(part)); // [3, 4, 5]
// зміна копії не чіпає оригінал
new Uint8Array(part)[0] = 99;
console.log(new Uint8Array(buffer)[2]); // 3 — не змінилось
// а subarray дав би ВІКНО в ту саму пам'ять
Коментарі
Коментарів ще немає — будьте першим!