Описание

TypedArray — общий абстрактный прототип типизированных массивов jCjS. Каждый конкретный массив представляет последовательность чисел одного типа поверх ArrayBuffer и предоставляет индексированный доступ array[index], а также методы обработки, сходные с методами обычного Array.

Назначение

Предназначен для компактного хранения числовых данных, обмена двоичными пакетами и предоставления общего API массивам: Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float32Array, Float64Array.

Реализация следует основной модели TypedArray, но содержит только перечисленные на этой странице методы. Uint8ClampedArray и часть методов современного ECMAScript в jCjS отсутствуют.


Конструктор

new TypedArray()
TypedArray является абстрактным типом: непосредственное создание вызывает ошибку «TypedArray is abstract». Вместо него используется один из конкретных конструкторов Type:

Пример использования

Пример взят из руководства Типизированные массивы JavaScript на MDN. Он показывает два представления одного ArrayBuffer. В jCjS console.log() заменён на post.log().

var buffer = new ArrayBuffer(16);
var int32View = new Int32Array(buffer);

for (var i = 0; i < int32View.length; i++) {
    int32View[i] = i * 2;
}

var int16View = new Int16Array(buffer);
int16View[0] = 32;

post.log('Элемент 0 в 32-битном представлении теперь равен ' + int32View[0]);


Свойства (property)

Сигнатура Описание
uint length Количество элементов в представлении. Только чтение; размер TypedArray после создания не изменяется.
uint byteOffset Смещение первого элемента относительно начала связанного ArrayBuffer в байтах. Только чтение.
uint byteLength Размер представления в байтах: length * BYTES_PER_ELEMENT. Только чтение.
uint BYTES_PER_ELEMENT Размер одного элемента конкретного типа в байтах. Доступно у экземпляра и у конструктора типа, например Uint32Array.BYTES_PER_ELEMENT == 4.
ArrayBuffer buffer Исходный ArrayBuffer, содержащий байты массива. Несколько представлений могут ссылаться на один буфер. Только чтение.
Для BigInt64Array и BigUint64Array используйте объекты, созданные из десятичных строк: BigInt("123") и BigUint("123"). Серверный движок ES5 не распознаёт литералы ECMAScript вида 123n.


Сигналы

не имеет



Функции

Сигнатура Описание
Type.of(value...) Статический метод конкретного типа. Создать новый TypedArray, содержащий переданные аргументы в том же порядке.
Type.from(source[, mapFn]) Статический метод конкретного типа. Скопировать элементы объекта с числовым свойством length. Если задан mapFn, записывать результат mapFn(value, index). Стандартный аргумент thisArg реализацией jCjS не обрабатывается.
value get(index) Вернуть элемент по неотрицательному индексу. За пределами массива возвращается undefined. Для 64-битных массивов результат имеет тип BigInt или BigUint.
bool set(index, value) Записать один элемент с преобразованием к типу массива. Для обычных числовых типов возвращает true при успешной записи и false при неверном индексе или значении.
bool set(source[, offset]) Скопировать обычный JS-массив в текущий массив, начиная с offset. Дополнительно поддерживается форма set(offset, source). Копирование прекращается у конца массива назначения.
TypedArray subarray(begin[, end]) Создать представление диапазона [begin, end) поверх того же ArrayBuffer; изменения общей области видны обоим массивам. В jCjS границы преобразуются в uint32, отрицательные индексы стандарта не поддерживаются.
TypedArray slice(begin[, end]) Создать новый буфер и скопировать диапазон [begin, end). Последующие изменения исходного массива и результата независимы. Отрицательные индексы не поддерживаются.
void forEach(callback[, thisArg]) По порядку вызвать callback(value, index, array) для каждого элемента. thisArg задаёт значение this внутри callback.
TypedArray fill(value[, start[, end]]) Заполнить значением диапазон [start, end) и вернуть текущий массив. Отрицательные start/end отсчитываются от конца.
TypedArray copyWithin(target, start[, end]) Скопировать часть массива [start, end) в позицию target без изменения длины. Перекрывающиеся диапазоны обрабатываются безопасно; возвращается текущий массив.
TypedArray reverse() Изменить порядок элементов на обратный непосредственно в текущем массиве и вернуть его.
int indexOf(value[, fromIndex]) Найти первое строго равное значение начиная с fromIndex; вернуть индекс либо −1. Отрицательный fromIndex отсчитывается от конца.
bool includes(value[, fromIndex]) Проверить наличие значения начиная с fromIndex. Отрицательный fromIndex отсчитывается от конца.
Iterator keys(), values(), entries() Вернуть итератор индексов, значений или пар [index, value]. Метод next() итератора возвращает объект с полями value и done.
TypedArray map(callback[, thisArg]) Создать массив того же типа и длины из результатов callback(value, index, array). Результаты преобразуются к типу элементов.
TypedArray filter(callback[, thisArg]) Создать массив того же типа только из элементов, для которых callback(value, index, array) вернул логически истинное значение.
value reduce(callback[, initial]) Последовательно слева направо вычислить одно значение функцией callback(accumulator, value, index, array). Пустой массив без initial вызывает ошибку.
value reduceRight(callback[, initial]) То же, но обработка выполняется справа налево.
String toString() Вернуть строковое представление элементов, разделённых запятыми.