Ответ 1
Вы можете использовать var array = Array.from(uint8Array)
в средах, которые поддерживают Array.from
уже (ES6), когда его не поддерживают, вы можете использовать var array = [].slice.call(uint8Array)
У меня есть экземпляр Uint8Array, который содержит двоичные данные некоторого файла.
Я хочу отправить данные на сервер, где он будет десериализован как byte [].
Но если я отправлю Uint8Array, у меня есть ошибка десериализации.
Итак, я хочу преобразовать его в Array, так как массив десериализуется хорошо.
Я делаю это следующим образом:
function uint8ArrayToArray(uint8Array) {
var array = [];
for (var i = 0; i < uint8Array.byteLength; i++) {
array[i] = uint8Array[i];
}
return array;
}
Эта функция работает нормально, но она не очень эффективна для больших файлов.
Вопрос: Есть ли более эффективный способ преобразования Uint8Array → Array?
Вы можете использовать var array = Array.from(uint8Array)
в средах, которые поддерживают Array.from
уже (ES6), когда его не поддерживают, вы можете использовать var array = [].slice.call(uint8Array)
Существует метод Uint8Array с использованием прототипа (но он поддерживается только Firefox и Chrome):
TypedArray.prototype.entries() → возвращает массив.
Проверьте это: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/entries