paginas - ¿Cómo puedo combinar TypedArrays en JavaScript?
javascript pdf (2)
Utilice el método de set
. ¡Pero tenga en cuenta que ahora necesita el doble de memoria!
var a = new Int8Array( [ 1, 2, 3 ] );
var b = new Int8Array( [ 4, 5, 6 ] );
var c = new Int8Array(a.length + b.length);
c.set(a);
c.set(b, a.length);
console.log(a);
console.log(b);
console.log(c);
Me gustaría combinar varios arraybuffers para crear un Blob. sin embargo, como usted sabe, TypedArray no tiene métodos "push" o útiles ...
P.ej:
var a = new Int8Array( [ 1, 2, 3 ] );
var b = new Int8Array( [ 4, 5, 6 ] );
Como resultado, me gustaría obtener [ 1, 2, 3, 4, 5, 6 ]
.
Yo siempre uso esta función:
function mergeTypedArrays(a, b) {
// Checks for truthy values on both arrays
if(!a && !b) throw ''Please specify valid arguments for parameters a and b.'';
// Checks for truthy values or empty arrays on each argument
// to avoid the unnecessary construction of a new array and
// the type comparison
if(!b || b.length === 0) return a;
if(!a || a.length === 0) return b;
// Make sure that both typed arrays are of the same type
if(Object.prototype.toString.call(a) !== Object.prototype.toString.call(b))
throw ''The types of the two arguments passed for parameters a and b do not match.'';
var c = new a.constructor(a.length + b.length);
c.set(a);
c.set(b, a.length);
return c;
}
La función original sin comprobación de nulos o tipos.
function mergeTypedArraysUnsafe(a, b) {
var c = new a.constructor(a.length + b.length);
c.set(a);
c.set(b, a.length);
return c;
}