supongamos, array1 = ['B', 'G', 'R', 'A'] , array2 es Uint8Array , ¿cómo concatenar estas dos matrices?
var array3 = array1.concat(array2) , pero el resultado parece incorrecto, y array3.length siempre es 5, independientemente del contenido de array2.
Su resultado ( array3 ) también debe ser una matriz Uint8Array .
Entonces, en su ejemplo, lo siguiente debería lograr lo que está buscando:
const array3 = new Uint8Array([ ...array1, ...array2]);Tu puedes hacer:
var array2 = Array.from(uint8Array); var array3 = array1.concat(array2);Su código está creando una nueva matriz con sus cuatro cadenas seguidas de Uint8Array como un solo elemento.
Array.prototype.concat es una bestia extraña. Si le da argumentos que no son " concat spreadable " (por ejemplo, cosas que no son matrices), incluye esos valores como elementos simples en la matriz que crea.
Las matrices tipadas no se pueden concat :
const uint8 = Uint8Array.from([3, 4]); console.log(uint8[Symbol.isConcatSpreadable]); // undefined (and the default is false) const softArray = [1, 2]; const result = softArray.concat(uint8); console.log(result.length); // 3 console.log(result[0]); // 1 console.log(result[1]); // 2 console.log(result[2]); // (A Uint8Array containing 3, 4) Podrías usar spread en lugar de concat :
const array1 = ['B', 'G', 'R', 'A']; const array2 = Uint8Array.from([1, 2, 3]); const result = [...array1, ...array2]; console.log(result); // ["B", "g", "R", "a", 1, 2, 3]