Типизированный массив
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Объект TypedArray описывает представление, подобное массиву, базового буфера двоичных данных. Глобального свойства с именем TypedArray не существует, как и непосредственно видимого конструктора TypedArray. Вместо этого существует несколько различных глобальных свойств, значениями которых являются конструкторы типизированных массивов для конкретных типов элементов, перечисленных ниже. На следующих страницах вы найдете общие свойства и методы, которые можно использовать с любым типизированным массивом, содержащим элементы любого типа.
Описание
Конструктор TypedArray (часто называемый %TypedArray%, чтобы подчеркнуть его «внутренний» характер, поскольку он не соответствует никакому глобальному объекту, доступному программе JavaScript) служит общим суперклассом всех подклассов TypedArray. Считайте %TypedArray% «абстрактным классом», предоставляющим общий интерфейс вспомогательных методов для всех подклассов типизированных массивов. Этот конструктор недоступен напрямую: глобального свойства TypedArray не существует. Доступ к нему возможен только через Object.getPrototypeOf(Int8Array) и аналогичные объекты.
При создании экземпляра подкласса TypedArray (например, Int8Array) буфер массива создается во внутренней памяти или, если в качестве аргумента конструктора передан объект ArrayBuffer, вместо него используется этот объект ArrayBuffer. Адрес буфера сохраняется как внутреннее свойство экземпляра, и все методы %TypedArray%.prototype задают и получают значения, используя этот адрес буфера массива.
Объекты TypedArray
| Тип | Диапазон значений | Размер в байтах | Тип Web IDL |
|---|---|---|---|
Int8Array | от -128 до 127 | 1 | byte |
Uint8Array | от 0 до 255 | 1 | octet |
Uint8ClampedArray | от 0 до 255 | 1 | octet |
Int16Array | от -32768 до 32767 | 2 | short |
Uint16Array | от 0 до 65535 | 2 | unsigned short |
Int32Array | от -2147483648 до 2147483647 | 4 | long |
Uint32Array | от 0 до 4294967295 | 4 | unsigned long |
Float16Array |
от -65504 до 65504
| 2 | Н/Д |
Float32Array |
от -3.4e38 до 3.4e38
| 4 | unrestricted float |
Float64Array |
от -1.8e308 до 1.8e308
| 8 | unrestricted double |
BigInt64Array | от -263 до 263 - 1 | 8 | bigint |
BigUint64Array | от 0 до 264 - 1 | 8 | bigint |
Кодирование и нормализация значений
Все типизированные массивы работают с объектами ArrayBuffer, в которых можно наблюдать точное побайтовое представление каждого элемента, поэтому способ кодирования чисел в двоичном формате имеет значение.
- Массивы беззнаковых целых чисел (
Uint8Array,Uint16Array,Uint32ArrayиBigUint64Array) хранят число напрямую в двоичном виде. - Массивы знаковых целых чисел (
Int8Array,Int16Array,Int32ArrayиBigInt64Array) хранят число в дополнительном коде. - Массивы чисел с плавающей точкой (
Float16Array,Float32ArrayиFloat64Array) хранят число в формате чисел с плавающей точкой IEEE 754. В справочникеNumberприведены дополнительные сведения о точном формате. По умолчанию числа JavaScript используют формат чисел с плавающей точкой двойной точности, совпадающий сFloat64Array. ВFloat32Arrayдля мантиссы используются 23 бита (вместо 52), а для экспоненты — 8 бит (вместо 11). ВFloat16Arrayдля мантиссы используются 10 бит, а для экспоненты — 5 бит. Обратите внимание: спецификация требует, чтобы для всех значенийNaNиспользовалась одна и та же битовая кодировка, однако конкретный шаблон бит зависит от реализации. -
Uint8ClampedArray— особый случай. Он хранит число в двоичном виде, какUint8Array, но при сохранении числа за пределами диапазона ограничивает его диапазоном от 0 до 255 согласно математическому значению, а не отбрасывает старшие биты.
Все типизированные массивы, кроме Int8Array, Uint8Array и Uint8ClampedArray, хранят каждый элемент с использованием нескольких байтов. Эти байты могут располагаться от старшего к младшему (порядок от старшего к младшему байту) или от младшего к старшему (порядок от младшего к старшему байту). Дополнительные пояснения см. в статье Порядок байтов. Типизированные массивы всегда используют собственный порядок байтов платформы. Если при чтении и записи в буферы необходимо указать порядок байтов, используйте вместо этого DataView.
При записи в эти типизированные массивы значения, выходящие за пределы представимого диапазона, нормализуются.
- Во всех массивах целых чисел (кроме
Uint8ClampedArray) используется преобразование чисел фиксированной разрядности, которое сначала отбрасывает десятичную часть числа, а затем оставляет младшие биты. -
Uint8ClampedArrayсначала ограничивает число диапазоном от 0 до 255 (значения больше 255 становятся равны 255, а значения меньше 0 — 0). Затем результат округляется (а не округляется вниз) до ближайшего целого по правилу округления к ближайшему четному: если число находится ровно посередине между двумя целыми, оно округляется до ближайшего четного. Например,0.5становится0,1.5становится2, а2.5становится2. -
Float16ArrayиFloat32Arrayвыполняют округление к ближайшему четному при преобразовании 64-разрядных чисел с плавающей точкой в 32-разрядные и 16-разрядные. Используются те же алгоритмы, что и в функцияхMath.fround()иMath.f16round().
Поведение при просмотре изменяемого размера буфера
Если TypedArray создан как представление буфера с изменяемым размером, изменение размера базового буфера по-разному влияет на размер TypedArray в зависимости от того, создан ли TypedArray с отслеживанием длины.
Если типизированный массив создан без указания размера — третий параметр опущен или передан undefined, — он будет отслеживать длину и автоматически изменять размер в соответствии с базовым buffer по мере изменения его размера:
const buffer = new ArrayBuffer(8, { maxByteLength: 16 });
const float32 = new Float32Array(buffer);
console.log(float32.byteLength); // 8
console.log(float32.length); // 2
buffer.resize(12);
console.log(float32.byteLength); // 12
console.log(float32.length); // 3
Если типизированный массив создан с указанием размера с помощью третьего параметра length, его размер не будет увеличиваться вслед за ростом buffer:
const buffer = new ArrayBuffer(8, { maxByteLength: 16 });
const float32 = new Float32Array(buffer, 0, 2);
console.log(float32.byteLength); // 8
console.log(float32.length); // 2
console.log(float32[0]); // 0, the initial value
buffer.resize(12);
console.log(float32.byteLength); // 8
console.log(float32.length); // 2
console.log(float32[0]); // 0, the initial value
При уменьшении размера buffer просматривающий его типизированный массив может выйти за границы буфера. В этом случае наблюдаемый размер типизированного массива уменьшится до 0. Это единственный случай, когда длина типизированного массива, не отслеживающего длину, может измениться.
const buffer = new ArrayBuffer(8, { maxByteLength: 16 });
const float32 = new Float32Array(buffer, 0, 2);
buffer.resize(7);
console.log(float32.byteLength); // 0
console.log(float32.length); // 0
console.log(float32[0]); // undefined
Если затем снова увеличить размер buffer так, чтобы типизированный массив снова оказался в границах буфера, его размер восстановится до исходного значения.
buffer.resize(8); console.log(float32.byteLength); // 8 console.log(float32.length); // 2 console.log(float32[0]); // 0 - back in bounds again!
То же может произойти и с типизированными массивами, отслеживающими длину, если размер буфера уменьшить ниже byteOffset.
const buffer = new ArrayBuffer(8, { maxByteLength: 16 });
const float32 = new Float32Array(buffer, 4);
// float32 is length-tracking, but it only extends from the 4th byte
// to the end of the buffer, so if the buffer is resized to be shorter
// than 4 bytes, the typed array will become out of bounds
buffer.resize(3);
console.log(float32.byteLength); // 0
Конструктор
Непосредственно создать экземпляр этого объекта нельзя: попытка вызвать его конструктор с помощью new приводит к исключению TypeError.
new (Object.getPrototypeOf(Int8Array))(); // TypeError: Abstract class TypedArray not directly constructable
Вместо этого создайте экземпляр типизированного массива определенного типа, например Int8Array или BigInt64Array. Для всех этих объектов используется общий синтаксис конструкторов:
new TypedArray() new TypedArray(length) new TypedArray(typedArray) new TypedArray(object) new TypedArray(buffer) new TypedArray(buffer, byteOffset) new TypedArray(buffer, byteOffset, length)
Здесь TypedArray — конструктор одного из конкретных типов.
Примечание: Конструкторы всех подклассов TypedArray можно вызывать только с помощью new. Попытка вызвать конструктор без new приводит к исключению TypeError.
Параметры
-
typedArray - При передаче экземпляра подкласса
TypedArrayобъектtypedArrayкопируется в новый типизированный массив. Для конструктораTypedArray, не относящегося к bigint, параметрtypedArrayможет иметь только один из типов, не относящихся к bigint (например,Int32Array). Аналогично, для конструктораTypedArrayтипа bigint (BigInt64ArrayилиBigUint64Array) параметрtypedArrayможет иметь только один из типов bigint. Каждое значение вtypedArrayперед копированием в новый массив преобразуется в соответствующий тип конструктора. Длина нового типизированного массива будет равна длине аргументаtypedArray. -
object - Если передан объект, не являющийся экземпляром
TypedArray, новый типизированный массив создается так же, как методомTypedArray.from(). -
lengthНеобязательный - Если передано значение, не являющееся объектом, параметр рассматривается как число, указывающее длину типизированного массива. Во внутренней памяти создается буфер массива размером
length, умноженным наBYTES_PER_ELEMENTбайт, и заполняется нулями. Если опустить все параметры, это равносильно использованию0в качествеlength. -
buffer,byteOffsetНеобязательный,lengthНеобязательный - Если передан экземпляр
ArrayBufferилиSharedArrayBuffer, а также, при необходимости, аргументыbyteOffsetиlength, создается новое представление типизированного массива для указанного буфера. ПараметрыbyteOffset(в байтах) иlength(в количестве элементов, каждый из которых занимаетBYTES_PER_ELEMENTбайт) задают диапазон памяти, доступный через представление типизированного массива. Если опущены оба параметра, просматривается весьbuffer; если опущен толькоlength, просматривается оставшаяся частьbuffer, начиная сbyteOffset. Если опущенlength, типизированный массив будет отслеживать длину.
Исключения
Конструкторы всех подклассов TypeArray работают одинаково. Все они могут вызывать следующие исключения:
-
TypeError - Вызывается в одном из следующих случаев:
- Передан объект
typedArrayтипа bigint, а текущий конструктор не относится к этому типу, или наоборот. - Передан объект
typedArray, но просматриваемый им буфер отсоединен, либо напрямую передан отсоединенныйbuffer.
- Передан объект
-
RangeError - Вызывается в одном из следующих случаев:
- Длина нового типизированного массива слишком велика.
- Длина
buffer(если параметрlengthне указан) илиbyteOffsetне кратна размеру элемента нового типизированного массива. -
byteOffsetне является допустимым индексом массива (целым числом от 0 до 253 - 1). - При создании представления буфера его границы выходят за пределы буфера. Другими словами,
byteOffset + length * TypedArray.BYTES_PER_ELEMENT > buffer.byteLength.
Статические свойства
Эти свойства определены у объекта-конструктора TypedArray и поэтому являются общими для всех конструкторов подклассов TypedArray.
-
TypedArray[Symbol.species] - Функция-конструктор, используемая для создания производных объектов.
У всех подклассов TypedArray также есть следующие статические свойства:
-
TypedArray.BYTES_PER_ELEMENT - Возвращает числовое значение размера элемента для различных объектов
TypedArray.
Статические методы
Эти методы определены у объекта-конструктора TypedArray и поэтому являются общими для всех конструкторов подклассов TypedArray.
-
TypedArray.from() - Создает новый
TypedArrayиз объекта, подобного массиву, или итерируемого объекта. См. такжеArray.from(). -
TypedArray.of() - Создает новый
TypedArrayс переменным количеством аргументов. См. такжеArray.of().
Свойства экземпляров
Эти свойства определены в TypedArray.prototype и являются общими для всех экземпляров подклассов TypedArray.
-
TypedArray.prototype.buffer - Возвращает
ArrayBuffer, на который ссылается типизированный массив. -
TypedArray.prototype.byteLength - Возвращает длину типизированного массива в байтах.
-
TypedArray.prototype.byteOffset - Возвращает смещение типизированного массива в байтах относительно начала его
ArrayBuffer. -
TypedArray.prototype.constructor - Функция-конструктор, создавшая объект-экземпляр.
TypedArray.prototype.constructor— это скрытая функция-конструкторTypedArray, но каждый подкласс типизированного массива также определяет собственное свойствоconstructor. -
TypedArray.prototype.length - Возвращает количество элементов в типизированном массиве.
-
TypedArray.prototype[Symbol.toStringTag] - Изначальное значение свойства
TypedArray.prototype[Symbol.toStringTag]— геттер, возвращающий ту же строку, что и имя конструктора типизированного массива. Он возвращаетundefined, если значениеthisне является одним из подклассов типизированных массивов. Это свойство используется вObject.prototype.toString(). Однако уTypedArrayтакже есть собственный методtoString(), поэтому это свойство не используется, если только вы не вызываетеObject.prototype.toString.call(), передав типизированный массив в качествеthisArg.
У всех подклассов TypedArray также есть следующие свойства экземпляров:
-
TypedArray.prototype.BYTES_PER_ELEMENT - Возвращает числовое значение размера элемента для различных объектов
TypedArray.
Методы экземпляров
Эти методы определены в объекте-прототипе TypedArray и поэтому являются общими для всех экземпляров подклассов TypedArray.
-
TypedArray.prototype.at() - Принимает целочисленное значение и возвращает элемент по указанному индексу. Метод допускает отрицательные целые числа, отсчитываемые от последнего элемента.
-
TypedArray.prototype.copyWithin() - Копирует последовательность элементов массива внутри массива. См. также
Array.prototype.copyWithin(). -
TypedArray.prototype.entries() - Возвращает новый объект итератора массива, содержащий пары ключ/значение для каждого индекса массива. См. также
Array.prototype.entries(). -
TypedArray.prototype.every() - Возвращает
false, если в массиве найдется элемент, не удовлетворяющий заданной проверочной функции. В противном случае возвращаетtrue. См. такжеArray.prototype.every(). -
TypedArray.prototype.fill() - Заполняет все элементы массива от начального до конечного индекса одним значением. См. также
Array.prototype.fill(). -
TypedArray.prototype.filter() - Создает новый массив из элементов этого массива, для которых заданная функция фильтрации возвращает
true. См. такжеArray.prototype.filter(). -
TypedArray.prototype.find() - Возвращает первый
elementв массиве, удовлетворяющий заданной проверочной функции, илиundefined, если подходящий элемент не найден. См. такжеArray.prototype.find(). -
TypedArray.prototype.findIndex() - Возвращает индекс первого элемента массива, удовлетворяющего заданной проверочной функции, или
-1, если подходящий элемент не найден. См. такжеArray.prototype.findIndex(). -
TypedArray.prototype.findLast() - Возвращает значение последнего элемента массива, удовлетворяющего заданной проверочной функции, или
undefined, если подходящий элемент не найден. См. такжеArray.prototype.findLast(). -
TypedArray.prototype.findLastIndex() - Возвращает индекс последнего элемента массива, удовлетворяющего заданной проверочной функции, или
-1, если подходящий элемент не найден. См. такжеArray.prototype.findLastIndex(). -
TypedArray.prototype.forEach() - Вызывает функцию для каждого элемента массива. См. также
Array.prototype.forEach(). -
TypedArray.prototype.includes() - Проверяет, содержит ли типизированный массив определенный элемент, и возвращает
trueилиfalseсоответственно. См. такжеArray.prototype.includes(). -
TypedArray.prototype.indexOf() - Возвращает первый (наименьший) индекс элемента массива, равного указанному значению, или
-1, если совпадений нет. См. такжеArray.prototype.indexOf(). -
TypedArray.prototype.join() - Возвращает новую строку, объединяющую все элементы этого типизированного массива через запятую или указанный разделитель. См. также
Array.prototype.join(). -
TypedArray.prototype.keys() - Возвращает новый итератор массива, содержащий ключи для каждого индекса массива. См. также
Array.prototype.keys(). -
TypedArray.prototype.lastIndexOf() - Возвращает последний (наибольший) индекс элемента массива, равного указанному значению, или
-1, если совпадений нет. См. такжеArray.prototype.lastIndexOf(). -
TypedArray.prototype.map() - Создает новый массив из результатов вызова заданной функции для каждого элемента этого массива. См. также
Array.prototype.map(). -
TypedArray.prototype.reduce() - Применяет функцию к аккумулятору и каждому значению массива (слева направо), сводя массив к одному значению. См. также
Array.prototype.reduce(). -
TypedArray.prototype.reduceRight() - Применяет функцию к аккумулятору и каждому значению массива (справа налево), сводя массив к одному значению. См. также
Array.prototype.reduceRight(). -
TypedArray.prototype.reverse() - Меняет порядок элементов массива на обратный: первый становится последним, а последний — первым. См. также
Array.prototype.reverse(). -
TypedArray.prototype.set() - Записывает в типизированный массив несколько значений, считывая их из указанного массива.
-
TypedArray.prototype.slice() - Извлекает часть массива и возвращает новый массив. См. также
Array.prototype.slice(). -
TypedArray.prototype.some() - Возвращает
true, если в массиве найдется элемент, удовлетворяющий заданной проверочной функции. В противном случае возвращаетfalse. См. такжеArray.prototype.some(). -
TypedArray.prototype.sort() - Сортирует элементы массива на месте и возвращает массив. См. также
Array.prototype.sort(). -
TypedArray.prototype.subarray() - Возвращает новый
TypedArrayдля указанного начального и конечного индексов элементов. -
TypedArray.prototype.toLocaleString() - Возвращает строку, представляющую массив и его элементы с учетом локали. См. также
Array.prototype.toLocaleString(). -
TypedArray.prototype.toReversed() - Возвращает новый массив с элементами в обратном порядке, не изменяя исходный массив.
-
TypedArray.prototype.toSorted() - Возвращает новый массив с элементами, отсортированными по возрастанию, не изменяя исходный массив.
-
TypedArray.prototype.toString() - Возвращает строку, представляющую массив и его элементы. См. также
Array.prototype.toString(). -
TypedArray.prototype.values() - Возвращает новый объект итератора массива, содержащий значения для каждого индекса массива. См. также
Array.prototype.values(). -
TypedArray.prototype.with() - Возвращает новый массив, в котором элемент по указанному индексу заменен заданным значением, не изменяя исходный массив.
-
TypedArray.prototype[Symbol.iterator]() - Возвращает новый объект итератора массива, содержащий значения для каждого индекса массива.
Примеры
Доступ к свойствам
Можно обращаться к элементам массива с помощью стандартного синтаксиса индексов массива (то есть используя квадратные скобки). Однако при чтении или установке индексированных свойств типизированных массивов поиск этого свойства в цепочке прототипов не выполняется, даже если индексы выходят за границы. При обращении к индексированным свойствам проверяется ArrayBuffer, но поиск свойств объекта не выполняется. Именованные свойства по-прежнему можно использовать, как и у любых других объектов.
// Setting and getting using standard array syntax const int16 = new Int16Array(2); int16[0] = 42; console.log(int16[0]); // 42 // Indexed properties on prototypes are not consulted (Fx 25) Int8Array.prototype[20] = "foo"; new Int8Array(32)[20]; // 0 // even when out of bound Int8Array.prototype[20] = "foo"; new Int8Array(8)[20]; // undefined // or with negative integers Int8Array.prototype[-1] = "foo"; new Int8Array(8)[-1]; // undefined // Named properties are allowed, though (Fx 30) Int8Array.prototype.foo = "bar"; new Int8Array(32).foo; // "bar"
Нельзя заморозить
Непустые TypedArray нельзя заморозить, поскольку их базовый ArrayBuffer может быть изменен через другое представление буфера TypedArray. Это означает, что объект фактически никогда не будет заморожен.
const i8 = Int8Array.of(1, 2, 3); Object.freeze(i8); // TypeError: Cannot freeze array buffer views with elements
ByteOffset должен быть выровнен
При создании TypedArray как представления ArrayBuffer аргумент byteOffset должен быть выровнен по размеру элемента; другими словами, смещение должно быть кратно BYTES_PER_ELEMENT.
const i32 = new Int32Array(new ArrayBuffer(4), 1); // RangeError: start offset of Int32Array should be a multiple of 4
const i32 = new Int32Array(new ArrayBuffer(4), 0);
ByteLength должен быть выровнен
Как и параметр byteOffset, свойство byteLength объекта ArrayBuffer, переданного конструктору TypedArray, должно быть кратно значению BYTES_PER_ELEMENT этого конструктора.
const i32 = new Int32Array(new ArrayBuffer(3)); // RangeError: byte length of Int32Array should be a multiple of 4
const i32 = new Int32Array(new ArrayBuffer(4));
Спецификации
Совместимость с браузерами
| Настольные ПК | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari в iOS | Samsung Internet | WebView для Android | WebView в iOS | Bun | Deno | Node.js | |
TypedArray |
7 |
12 |
4 |
11.6 |
5.1 |
18 |
4 |
12 |
4.2 |
1.0 |
4 |
4.2 |
1.0.0 |
1.0 |
0.10.0 |
@@iterator |
38 |
12 |
36
27–36Используется свойство-заполнитель с именем@@iterator.17–27Используется свойство-заполнитель с именемiterator. |
25 |
10 |
38 |
36
27–36Используется свойство-заполнитель с именем@@iterator.17–27Используется свойство-заполнитель с именемiterator. |
25 |
10 |
3.0 |
38 |
10 |
1.0.0 |
1.0 |
0.12.0 |
@@species |
51 |
13 |
48 |
38 |
10 |
51 |
48 |
41 |
10 |
5.0 |
51 |
10 |
1.0.0 |
1.0 |
6.5.0 |
BYTES_PER_ELEMENT |
7 |
12 |
4 |
11.6 |
5.1 |
18 |
4 |
12 |
4.2 |
1.0 |
4 |
4.2 |
1.0.0 |
1.0 |
0.10.0 |
at |
92 |
92 |
90 |
78 |
15.4 |
92 |
90 |
65 |
15.4 |
16.0 |
92 |
15.4 |
1.0.0 |
Нет |
16.6.0 |
buffer |
7 |
12 |
4 |
11.6 |
5.1 |
18 |
4 |
12 |
4.2 |
1.0 |
4 |
4.2 |
1.0.0 |
1.0 |
0.10.0 |
byteLength |
7 |
12 |
4 |
11.6 |
5.1 |
18 |
4 |
12 |
4.2 |
1.0 |
4 |
4.2 |
1.0.0 |
1.0 |
0.10.0 |
byteOffset |
7 |
12 |
4 |
11.6 |
5.1 |
18 |
4 |
12 |
4.2 |
1.0 |
4 |
4.2 |
1.0.0 |
1.0 |
0.10.0 |
constructor_without_parameters |
7 |
12 |
55 |
11.6 |
5.1 |
18 |
55 |
12 |
5 |
1.0 |
4.4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
copyWithin |
45 |
12 |
34 |
32 |
10 |
45 |
34 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
entries |
45 |
12 |
37 |
32 |
10 |
45 |
37 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
0.12.0 |
every |
45 |
12 |
37 |
32 |
10 |
45 |
37 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
fill |
45 |
12 |
37 |
32 |
10 |
45 |
37 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
filter |
45 |
12 |
38 |
32 |
10 |
45 |
38 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
find |
45 |
12 |
37 |
32 |
10 |
45 |
37 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
findIndex |
45 |
12 |
37 |
32 |
10 |
45 |
37 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
findLast |
97 |
97 |
104 |
83 |
15.4 |
97 |
104 |
68 |
15.4 |
18.0 |
97 |
15.4 |
1.0.0 |
1.16 |
Нет |
findLastIndex |
97 |
97 |
104 |
83 |
15.4 |
97 |
104 |
68 |
15.4 |
18.0 |
97 |
15.4 |
1.0.0 |
1.16 |
Нет |
forEach |
45 |
12 |
38 |
32 |
10 |
45 |
38 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
from |
45 |
12 |
38 |
32 |
10 |
45 |
38 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
includes |
47 |
14 |
43 |
34 |
10 |
47 |
43 |
34 |
10 |
5.0 |
47 |
10 |
1.0.0 |
1.0 |
6.0.0 |
indexOf |
45 |
12 |
37Начиная с Firefox 47 этот метод больше не будет возвращать-0. Например, new Uint8Array([0]).indexOf(0, -0) теперь всегда будет возвращать +0. |
32 |
10 |
45 |
37Начиная с Firefox для Android 47 этот метод больше не будет возвращать-0. Например, new Uint8Array([0]).indexOf(0, -0) теперь всегда будет возвращать +0. |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
index_properties_not_consulting_prototype |
7Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
12Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
25 |
11.6Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
5.1Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
18Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
25 |
12Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
5Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
1.0Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
4.4Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
5Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
1.0.0Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
1.0Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
0.10.0Отрицательные целые числа не считаются индексированными свойствами и поэтому возвращают значение свойства-прототипа. |
iterable_in_constructor |
39 |
14 |
52 |
26 |
10 |
39 |
52 |
26 |
10 |
4.0 |
39 |
10 |
1.0.0 |
1.0 |
4.0.0 |
join |
45 |
12 |
37 |
32 |
10 |
45 |
37 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
keys |
38 |
12 |
37 |
25 |
10 |
38 |
37 |
25 |
10 |
3.0 |
38 |
10 |
1.0.0 |
1.0 |
0.12.0 |
lastIndexOf |
45 |
12 |
37Начиная с Firefox 47 этот метод больше не будет возвращать-0. Например, new Uint8Array([0]).lastIndexOf(0, -0) теперь всегда будет возвращать +0. |
32 |
10 |
45 |
37Начиная с Firefox для Android 47 этот метод больше не будет возвращать-0. Например, new Uint8Array([0]).lastIndexOf(0, -0) теперь всегда будет возвращать +0. |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
length |
7 |
12 |
4 |
11.6 |
5.1 |
18 |
4 |
12 |
4.2 |
1.0 |
4 |
4.2 |
1.0.0 |
1.0 |
0.10.0 |
map |
45 |
12 |
38 |
32 |
10 |
45 |
38 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
name |
7 |
12 |
4 |
11.6 |
5.1 |
18 |
4 |
12 |
4.2 |
1.0 |
4 |
4.2 |
1.0.0 |
1.0 |
0.10.0 |
named_properties |
7 |
12 |
30 |
11.6 |
5.1 |
18 |
30 |
12 |
5 |
1.0 |
4.4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
of |
45 |
12 |
38 |
32 |
10 |
45 |
38 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
reduce |
45 |
12 |
37 |
32 |
10 |
45 |
37 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
reduceRight |
45 |
12 |
37 |
32 |
10 |
45 |
37 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
reverse |
45 |
12 |
37 |
32 |
10 |
45 |
37 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
set |
7 |
12 |
4 |
11.6 |
5.1 |
18 |
4 |
12 |
4.2 |
1.0 |
4 |
4.2 |
1.0.0 |
1.0 |
0.10.0 |
slice |
45 |
12 |
38 |
32 |
10 |
45 |
38 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
some |
45 |
12 |
37 |
32 |
10 |
45 |
37 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
sort |
45 |
12 |
46 |
32 |
10 |
45 |
46 |
32 |
10 |
5.0 |
45 |
10 |
1.0.0 |
1.0 |
4.0.0 |
subarray |
7 |
12 |
4 |
11.6 |
5.1 |
18 |
4 |
12 |
4.2 |
1.0 |
4 |
4.2 |
1.0.0 |
1.0 |
0.12.0 |
toLocaleString |
7 |
12 |
51 |
11.6 |
5.1 |
18 |
51 |
12 |
5 |
1.0 |
4.4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
toReversed |
110 |
110 |
115 |
96 |
16 |
110 |
115 |
74 |
16 |
21.0 |
110 |
16 |
1.0.0 |
1.31 |
20.0.0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
toSorted |
110 |
110 |
115 |
96 |
16 |
110 |
115 |
74 |
16 |
21.0 |
110 |
16 |
1.0.0 |
1.31 |
20.0.0 |
toString |
7 |
12 |
51 |
11.6 |
5.1 |
18 |
51 |
12 |
5 |
1.0 |
4.4 |
5 |
1.0.0 |
1.0 |
0.10.0 |
values |
38 |
12 |
37 |
25 |
10 |
38 |
37 |
25 |
10 |
3.0 |
38 |
10 |
1.0.0 |
1.0 |
0.12.0 |
with |
110 |
110 |
115 |
96 |
16 |
110 |
115 |
74 |
16 |
21.0 |
110 |
16 |
1.0.0 |
1.31 |
20.0.0 |
См. также
- Полифил типизированных массивов в
core-js - Руководство по типизированным массивам JavaScript
ArrayBufferDataViewTextDecoder
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray