Типизированные массивы
Массивы - это объекты JavaScript, которые могут содержать множество разных элементов. var complexArr = [1, 5, "2", "Word", {"name": "James"}];
В основном, что происходит в фоновом режиме, так это то, что ваш браузер автоматически предоставит необходимый объем памяти для этого массива. Он также будет изменяться по мере необходимости, если вы добавите или удалите данные. Тем не менее, в мире высокой производительности и разных типов элементов иногда требуется более конкретная информация о том, сколько памяти передано массиву. Ответы на эту проблему вызывают типизированные массивы . Теперь вы можете сказать, сколько памяти вы хотите дать массиву. Ниже представлен базовый обзор различных типов доступных массивов и размер в байтах для каждого элемента в этом массиве.
Тип | Размер каждого элемента в байтах |
---|---|
Int8Array | 1 |
Uint8Array | 1 |
Uint8ClampedArray | 1 |
Int16Array | 2 |
Uint16Array | 2 |
Int32Array | 4 |
Uint32Array | 4 |
Float32Array | 4 |
Float64Array | 8 |
Int16Array
как создать Int16Array
длиной 3 длины. var i8 = новый Int16Array (3);Вы также можете создать буфер, чтобы указать, сколько данных (в байтах) требуется массиву. Заметка
console.log (i8);
// Возвращает [0, 0, 0]
Чтобы создать типизированные массивы с использованием буферов, вам необходимо назначить количество байтов кратным байтам, перечисленным выше.
// Создаем такой же массив Int16Array по-разномуБуферы представляют собой объекты общего назначения, которые просто переносят данные. Вы не можете получить к ним доступ в обычном режиме. Чтобы получить к ним доступ, вам нужно сначала создать представление .
var byteSize = 6; // Требуется быть кратным 2
var buffer = new ArrayBuffer (byteSize);
var i8View = новый Int16Array (буфер);
buffer.byteLength; // Возвращает 6
i8View.byteLength; // Возвращает 6
console.log (i8View); // Возвращает [0, 0, 0]
i8View [0] = 42;Заметка
console.log (i8View); // Возвращает [42, 0, 0]
Типизированные массивы не имеют некоторых методов, которые имеют традиционные массивы, такие как
.pop()
или .push()
. В типизированных массивах также отсутствует Array.isArray()
который проверяет, что-то есть массив. Хотя это проще, это может быть преимуществом для менее сложных JavaScript-движков для их реализации.Сначала создайте buffer
размером 64 байта. Затем создайте массив с массивом Int32Array
с видом i32View
.