Референсное руководство по типизированным массивам JavaScript

Типизированные массивы JavaScript

в Javascript типизированные массивы являются буферами двоичных данных, подобными массивам.

в Javascript не существует свойств или объектов с именем TypedArray, но свойства и методы могут использоваться вместе с объектами типизированных массивов:

пример

const myArr = new Int8Array(10);

попробуйте сами

объект типизированного массива

объект тип данных диапазон
Int8Array сigned целое (байт) -128/127
Uint8Array несigned целое (восьмибитный байт) 0/255
Uint8ClampedArray несigned целое (восьмибитный байт) 0/255
Int16Array короткое целое -32768/32767
Uint16Array несigned короткое целое 0/65535
Int32Array сigned длинное целое -231/231-1
Uint32Array несigned длинное целое 0/232
Float32Array плавающая точка - 7 знаков после запятой 1.2x10-38/3.4x1038
Float64Array двойная точность плавающей точки - 16 знаков после запятой 5.0x10-324/1.8x10308
BigInt64Array символьное большое целое -263/263-1
BigUint64Array Несigned big integer 0/264

Объяснение

Типизированные массивы не являются массивами.

isArray() на типизированных массивах возвращает false.

Типизированные массивы не поддерживают многие методы массивов (например, push и pop).

Типизированные массивы - это объекты, похожие на массивы, которые используются для хранения двоичных данных в памяти.

Методы и свойства Typed Array

Метод / свойство Описание
BYTES_PER_ELEMENT Вычисляет атрибут, определяющий количество байт на элемент.
fill() Заполняет все элементы одним значением.
find() Возвращает первый элемент, удовлетворяющий условию.
name Возвращает имя типизированного массива.
of() Создание типизированного массива из массива.
some() Если элемент удовлетворяет условию, то возвращает true.

Uint8Array против Uint8ClampedArray

Разница между Uint8Array и Uint8ClampedArray заключается в том, как добавлять значения.

Если элемент Uint8ClampedArray установлен в значение за пределами диапазона 0-255, он будет по умолчанию установлен в 0 или 255.

Типизированные массивы будут принимать только первые 8 бит.

Преимущества типизированных массивов

Типизированные массивы предоставляют метод обработки двоичных данных, который так же эффективен, как и работа с массивами в C.

Типизированные массивы являются исходной памятью, поэтому JavaScript может передавать их любым функциям, не требуя преобразования данных в другую форму.

Типизированные массивы значительно быстрее обычных массивов и используются для передачи данных в функции, которые могут использовать исходные байтовые данные (компьютерные игры, WebGL, Canvas, файловые API, медиа API).

Браузерные API поддерживают типизированные массивы

Пример Fetch API

fetch(url)
.then(request => request.arrayBuffer())
.then(arrayBuffer =>...);

Пример Canvas

const canvas = document.getElementById('my_canvas');
const context = canvas.getContext('2d');
const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
const uint8ClampedArray = imageData.data;

Поддержка браузеров

typedArray Это функция ECMAScript6 (ES6).

Все современные браузеры поддерживают ES6 (JavaScript 2015).

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera
Да Да Да Да Да

Internet Explorer 11 (и более ранние версии) не поддерживает typedArray.