Tengo una instancia de Uint8Array que contiene datos binarios de algún archivo.
Quiero enviar datos al servidor, donde se deserializarán como byte[].
Pero si envío Uint8Array, tengo un error de deserialización.
Entonces, quiero convertirlo a Array, ya que Array está bien deserializado.
Lo hago de la siguiente manera:
function uint8ArrayToArray(uint8Array) { var array = []; for (var i = 0; i < uint8Array.byteLength; i++) { array[i] = uint8Array[i]; } return array; }Esta función funciona bien, pero no es muy eficiente para archivos grandes.
Pregunta: ¿Existe una forma más eficiente de convertir Uint8Array --> Array?
Puede usar lo siguiente en entornos que ya admiten Array.from (ES6)
var array = Array.from(uint8Array)Cuando eso no es compatible, puede usar
var array = [].slice.call(uint8Array)Hay un método de Uint8Array que usa el prototipo (pero solo es compatible con Firefox y Chrome):
TypedArray.prototype.entries() --> devuelve una matriz.
Échale un vistazo: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/entries