Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
TypedArray
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julio de 2015.
* Some parts of this feature may have varying levels of support.
Un objetoTypedArray describe una vista similar a un arreglo de unbúfer de datos binarios subyacente. No existe una propiedad global denominadaTypedArray, ni existe un constructorTypedArray directamente visible. En cambio, hay una serie de diferentes propiedades globales, cuyos valores son constructores de arreglos tipados para tipos de elementos específicos, que se enumeran a continuación. En las siguientes páginas, encontrarás propiedades y métodos comunes que se pueden utilizar con cualquier arreglo tipado que contenga elementos de cualquier tipo.
In this article
Pruébalo
// Create a TypedArray with a size in bytesconst typedArray1 = new Int8Array(8);typedArray1[0] = 32;const typedArray2 = new Int8Array(typedArray1);typedArray2[1] = 42;console.log(typedArray1);// Expected output: Int8Array [32, 0, 0, 0, 0, 0, 0, 0]console.log(typedArray2);// Expected output: Int8Array [32, 42, 0, 0, 0, 0, 0, 0]Descripción
ECMAScript 2015 define un constructorTypedArray que sirve como[[Prototype]] de todos los constructoresTypedArray. Este constructor no está expuesto directamente: no existe una propiedad global%TypedArray% oTypedArray. Solo es accesible directamente a través deObject.getPrototypeOf(Int8Array) y similares. Todos los constructores deTypedArray heredan propiedades comunes de la función constructora%TypedArray%. Además, todos los prototipos de arreglos con tipo (TypedArray.prototype) tienen%TypedArray%.prototype como su[[Prototype]].
El constructor%TypedArray% por sí solo no es particularmente útil. Llamarlo o usarlo en una expresiónnew arrojará unTypeError, excepto cuando se usa durante la creación de objetos en motores JS que admiten subclases. Actualmente no existen tales motores, por lo que%TypedArray% solo es útil para rellenar funciones o propiedades en todos los constructoresTypedArray.
Al crear una instancia deTypedArray (p. ej.,Int8Array), se crea un arreglo de búfer internamente en la memoria o, si se proporciona un objetoArrayBuffer como argumento del constructor, entonces se usa en su lugar. La dirección del búfer se guarda como una propiedad interna de la instancia y todos los métodos de%TypedArray%.prototype, es decir, establecer el valor y obtener valor, etc.., operan en esa dirección del arreglo de búfer.
Objetos TypedArray
| Tipo | Intervalo de valores | Tamaño en bytes | Descripción | Tipo de IDL web | Tipo C equivalente |
|---|---|---|---|---|---|
Int8Array | -128 a127 | 1 | Dos enteros complementarios de 8 bits con signo | byte | int8_t |
Uint8Array | 0 a255 | 1 | Entero de 8-bit sin signo | octet | uint8_t |
Uint8ClampedArray | 0 a255 | 1 | Entero de 8 bits sin signo (sujeto) | octet | uint8_t |
Int16Array | -32768 a32767 | 2 | Dos enteros complementarios de 16 bits con signo | short | int16_t |
Uint16Array | 0 a65535 | 2 | Entero de 16 bits sin signo | Short sin signo | uint16_t |
Int32Array | -2147483648 a2147483647 | 4 | dos enteros complementarios de 32 bits con signo | long | int32_t |
Uint32Array | 0 a4294967295 | 4 | Enteros de 32 bits sin signo | long sin signo | uint32_t |
Float32Array | 1.2×10^-38 a3.4×10^38 | 4 | Número de coma flotante IEEE de 32 bits (7 dígitos significativos, p. ej.,1.1234567) | float sin restricciones | float |
Float64Array | 5.0×10^-324 a1.8×10^308 | 8 | Número de coma flotante IEEE de 64 bits (16 dígitos significativos, p. Ej.,1.123...15) | doble sin restricciones | double |
BigInt64Array | -2^63 a2^63-1 | 8 | Dos enteros complementarios de 64 bits con signo | bigint | int64_t (long long con signo) |
BigUint64Array | 0 a2^64-1 | 8 | Entero de 64 bits sin signo | bigint | uint64_t (long long sin signo) |
Constructor
No se puede crear una instancia de este objeto directamente. En su lugar, crea una instancia de un arreglo de un tipo particular, tal comoInt8Array oBigInt64Array. Todos estos objetos tienen una sintaxis común para sus constructores:
new TypedArray();new TypedArray(length);new TypedArray(typedArray);new TypedArray(object);new TypedArray(buffer [, byteOffset [, length]]);
DondeTypedArray es un constructor para uno de los tipos concretos.
Parámetros
lengthCuando se llama con un argumento
length, se crea un búfer de arreglo interno en la memoria, de tamañolengthmultiplicado porBYTES_PER_ELEMENTbytes, que contienen ceros.typedArrayCuando se llama con un argumento
typedArray, que puede ser un objeto de cualquiera de los tipos de arreglo con tipo (comoInt32Array), eltypedArrayse copia en un nuevo arreglo tipado. Cada valor entypedArrayse convierte al tipo correspondiente del constructor antes de ser copiado en el nuevo arreglo. La longitud del nuevo arreglo tipado será la misma que la longitud del argumentotypedArray.objectCuando se llama con un argumento
object, se crea un nuevo arreglo tipado como si fuera el métodoTypedArray.from().buffer,byteOffset,lengthCuando se llama con un
buffery, opcionalmente, unbyteOffsety unlength, se crea una nueva vista del arreglo tipado que visualiza elArrayBufferespecificado. Los parámetrosbyteOffsetylengthespecifican el rango de memoria que será expuesto por la vista del arreglo tipado. Si se omiten ambos, se visualiza todo elbuffer; si solo se omitelength, se visualiza el resto debuffer.
Propiedades estáticas
TypedArray.BYTES_PER_ELEMENTDevuelve un valor numérico del tamaño del elemento para los diferentes objetos
TypedArray.TypedArray.nameDevuelve el valor de cadena del nombre del constructor (por ejemplo,
"Int8Array").get TypedArray[@@species]La función constructora utilizada para crear objetos derivados.
TypedArray.prototypePrototipo para objetos
TypedArray.
Métodos estáticos
TypedArray.from()Crea un nuevo
TypedArraya partir de un objeto iterable o similar a un arreglo. Consulta tambiénArray.from().TypedArray.of()Crea un nuevo
TypedArraycon un número variable de argumentos. Consulta tambiénArray.of().
Propiedades de la instancia
TypedArray.prototype.bufferDevuelve el
ArrayBufferal que hace referencia el arreglo tipado. Corregido en el momento de la construcción y, por lo tanto, desolo lectura.TypedArray.prototype.byteLengthDevuelve la longitud (en bytes) del arreglo tipado. Corregido en el momento de la construcción y, por lo tanto, desolo lectura.
TypedArray.prototype.byteOffsetDevuelve el desplazamiento (en bytes) del arreglo tipado desde el inicio de su
ArrayBuffer. Corregido en el momento de la construcción y, por lo tanto, desolo lectura.TypedArray.prototype.lengthDevuelve el número de elementos contenidos en el arreglo tipado. Corregido en el momento de la construcción y, por lo tanto, desolo lectura.
Métodos de instancia
TypedArray.prototype.copyWithin()Copia una secuencia de elementos de arreglo dentro del arreglo. Consulta también
Array.prototype.copyWithin().TypedArray.prototype.entries()Devuelve un nuevo objeto
Array Iteratorque contiene los pares clave/valor para cada índice del arreglo. Consulta tambiénArray.prototype.entries().TypedArray.prototype.every()Comprueba si todos los elementos del arreglo pasan la prueba proporcionada por una función. Consulta también
Array.prototype.every().TypedArray.prototype.fill()Rellena todos los elementos de un arreglo desde un índice inicial hasta un índice final con un valor estático. Consulta también
Array.prototype.fill().TypedArray.prototype.filter()Crea un nuevo arreglo con todos los elementos de este arreglo para la cual la función de filtrado proporcionada devuelve
true. Consulta tambiénArray.prototype.filter().TypedArray.prototype.find()Devuelve el valor encontrado en el arreglo, si un elemento del arreglo satisface la función de prueba proporcionada, o
undefinedsi no se encuentra. Consulta tambiénArray.prototype.find().TypedArray.prototype.findIndex()Devuelve el índice encontrado en el arreglo, si un elemento del arreglo satisface la función de prueba proporcionada o
-1si no se encuentra. Consulta tambiénArray.prototype.findIndex().TypedArray.prototype.forEach()Llama a una función para cada elemento del arreglo. Consulta también
Array.prototype.forEach().TypedArray.prototype.includes()Determina si un arreglo tipado incluye un determinado elemento, devolviendo
trueofalsesegún corresponda. Consulta tambiénArray.prototype.includes().TypedArray.prototype.indexOf()Devuelve el primer (mínimo) índice de un elemento dentro del arreglo igual al valor especificado, o
-1si no se encuentra ninguno. Consulta tambiénArray.prototype.indexOf().TypedArray.prototype.join()Une todos los elementos de un arreglo en una cadena. Consulta también
Array.prototype.join().TypedArray.prototype.keys()Devuelve un nuevo
Array Iteratorque contiene las claves para cada índice del arreglo. Consulta tambiénArray.prototype.keys().TypedArray.prototype.lastIndexOf()Devuelve el último (mayor) índice de un elemento dentro del arreglo igual al valor especificado, o
-1si no se encuentra ninguno. Consulta tambiénArray.prototype.lastIndexOf().TypedArray.prototype.map()Crea un nuevo arreglo con los resultados de llamar a una función proporcionada en cada elemento de este arreglo. Consulta también
Array.prototype.map().TypedArray.prototype.reduce()Aplica una función contra un acumulador y cada valor del arreglo (de izquierda a derecha) para reducirlo a un solo valor. Consulta también
Array.prototype.reduce().TypedArray.prototype.reduceRight()Aplica una función contra un acumulador y cada valor del arreglo (de derecha a izquierda) para reducirlo a un solo valor. Consulta también
Array.prototype.reduceRight().TypedArray.prototype.reverse()Invierte el orden de los elementos de un arreglo: el primero se convierte en el último y el último en el primero. Consulta también
Array.prototype.reverse().TypedArray.prototype.set()Almacena múltiples valores en el arreglo tipado, leyendo valores de entrada de un arreglo especificado.
TypedArray.prototype.slice()Extrae una sección de un arreglo y devuelve un nuevo arreglo. Consulta también
Array.prototype.slice().TypedArray.prototype.some()Devuelve
truesi al menos un elemento de este arreglo satisface la función de prueba proporcionada. Consulta tambiénArray.prototype.some().TypedArray.prototype.sort()Ordena los elementos de un arreglo en su lugar y devuelve el arreglo. Consulta también
Array.prototype.sort().TypedArray.prototype.subarray()Devuelve un nuevo
TypedArraydel índice del elemento inicial y final dado.TypedArray.prototype.values()Devuelve un nuevo objeto
Array Iteratorque contiene los valores de cada índice del arreglo. Consulta tambiénArray.prototype.values().TypedArray.prototype.toLocaleString()Devuelve una cadena localizada que representa el arreglo y sus elementos. Consulta también
Array.prototype.toLocaleString().TypedArray.prototype.toString()Devuelve una cadena que representa el arreglo y sus elementos. Consulta también
Array.prototype.toString().TypedArray.prototype[@@iterator]()Devuelve un nuevo objeto
Array Iteratorque contiene los valores de cada índice del arreglo.
Ejemplos
>Se requierenew
A partir de ECMAScript 2015, los constructoresTypedArray se deben construir con el operadornew. Llamar a un constructorTypedArray como una función sinnew arrojará unTypeError.
var dv = Int8Array([1, 2, 3]);// TypeError: llamar a un constructor Int8Array incorporado// sin new está prohibidovar dv = new Int8Array([1, 2, 3]);Acceso a la propiedad
Puedes hacer referencia a elementos en el arreglo utilizando la sintaxis de índice de arreglo estándar (es decir, utilizando la notación entre corchetes). Sin embargo, obtener o establecer propiedades indexadas en arreglos tipados no buscará esta propiedad en la cadena de prototipos, incluso cuando los índices estén fuera de límites. Las propiedades indexadas consultarán elArrayBuffer y nunca mirarán las propiedades del objeto. Aún puedes usar propiedades con nombre, al igual que con todos los objetos.
// Configuración y obtención usando la sintaxis de arreglo estándarvar int16 = new Int16Array(2);int16[0] = 42;[parcial]console.log(0);// No se consultan las propiedades indexadas en los prototipos (Fx 25)Int8Array.prototype[20] = 'foo';(new Int8Array(32))[20]; // 0// incluso cuando está fuera del límiteInt8Array.prototype[20] = 'foo';(new Int8Array(8))[20]; // undefined// o con enteros negativosInt8Array.prototype[-1] = 'foo';(new Int8Array(8))[-1]; // undefined// Sin embargo, se permiten propiedades con nombre (Fx 30)Int8Array.prototype.foo = 'bar';(new Int8Array(32)).foo; // "bar"Especificaciones
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-typedarray-objects> |
Compatibilidad con navegadores
Ve también
- Arreglos tipados JavaScript
ArrayBufferDataView- TextDecoder — Ayuda que decodifica cadenas a partir de datos numéricos