JavaScript ArrayBuffer.slice() — копія частини буфера


Метод slice() повертає новий буфер із копією байтів у заданому діапазоні.

автор: NagarD

Загальний опис

Ключове слово — копія. Змінивши новий буфер, ти не зачепиш оригінал: це різна пам'ять.

Саме цим slice() відрізняється від subarray() типізованих масивів — той віддає вікно в ту саму пам'ять, без копіювання. На великих даних різниця відчутна: копіювання коштує часу й пам'яті, вікно — ні.

Від'ємні індекси працюють як у масивів — рахуються з кінця.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
slice 7+ 4+ 5.1+ 11.6+ 12+ 10+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
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 дав би ВІКНО в ту саму пам'ять
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід