TypedArray — общий абстрактный прототип типизированных массивов jCjS. Каждый конкретный массив представляет последовательность чисел одного типа поверх ArrayBuffer и предоставляет индексированный доступ array[index], а также методы обработки, сходные с методами обычного Array.
Предназначен для компактного хранения числовых данных, обмена двоичными пакетами и предоставления общего API массивам: Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float32Array, Float64Array.
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]);
| Сигнатура | Описание |
|---|---|
| uint length | Количество элементов в представлении. Только чтение; размер TypedArray после создания не изменяется. |
| uint byteOffset | Смещение первого элемента относительно начала связанного ArrayBuffer в байтах. Только чтение. |
| uint byteLength | Размер представления в байтах: length * BYTES_PER_ELEMENT. Только чтение. |
| uint BYTES_PER_ELEMENT | Размер одного элемента конкретного типа в байтах. Доступно у экземпляра и у конструктора типа, например Uint32Array.BYTES_PER_ELEMENT == 4. |
| ArrayBuffer buffer | Исходный ArrayBuffer, содержащий байты массива. Несколько представлений могут ссылаться на один буфер. Только чтение. |
не имеет
| Сигнатура | Описание |
|---|---|
| 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() | Вернуть строковое представление элементов, разделённых запятыми. |