Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.
El objeto global de JavaScript Array
es un constructor para matrices unidimensionales (también llamadas vectores o arreglos), que son objetos tipo lista de alto nivel.
Crear un array
var fruits = ["Manzana", "Plátano"]; console.log(fruits.length); // 2
Acceder (en índice) a un elemento de un Array
var first = fruits[0]; // Manzana var last = fruits.[fruits.length - 1]; // Plátano
Bucle sobre un Array
fruits.forEach(function (item, index, array) { console.log(item, index); }); // Manzana 0 // Plátano 1
Añadir al final de un Array
var newLength = fruits.push("Naranja"); // ["Manzana", "Plátano", "Naranja"];
Eliminar elemento del final de un Array
var last = fruits.pop(); // elimina Naranja (del final) // ["Manzana", "Plátano"];
Eliminar elemento del inicio de un Array
var first = fruits.shift(); // elimina Manzana del inicio // ["Plátano"];
Añadir elemento al inicio de un Array
var newLength = fruits.unshift("Fresa"); // añade al inicio // ["Fresa", "Plátano"];
Encuentra el índice de un elemento en el Array
fruits.push("Mango"); // ["Fresa", "Plátano", "Mango"]; var pos = fuits.indexOf("Plátano"); // 1
Elimina un elemento por la posición del índice
var removedItem = fruits.splice(pos, 1); // esta es la forma de eliminar un elemento // ["Fresa", "Mango"];
Copiar un Array
var shallowCopy = fruits.slice(); // esta es la forma de crear una copia // ["Fresa", "Mango"];
Sintaxis
Usando el constructor del objeto Array
:
new Array(arrayLength) new Array(elemento0, elemento1, ..., elementoN)
Usando la sintaxis:
[elemento0, elemento1, ..., elementoN]
Parámetros
- arrayLength
- Es la longitud inicial de la matriz unidimensional. Puede acceder a este valor utilizando la propiedad
length
. Si el valor especificado no es un número, se crea una matriz unidimensional de longitud 1, con el primer elemento teniendo el valor especificado. La longitud máxima permitida para una matriz unidimensional es de 4.294.967.295.
- elementN
- Una lista de valores para los elementos de la matriz unidimensional. Cuando es especificada de esta manera, la matriz unidimensional se inicializa con los valores especificados como sus elementos y la propiedad
length
de la matriz unidimensional toma el valor del número de argumentos.
Descripción
Una matriz unidimensional (o vector) es un conjunto ordenado de valores asociados con un único nombre de variable. Nótese que usted no debería utilizarlo como una matriz unidimensional asociativa, utilice en su lugar un object
.
El siguiente ejemplo crea un objeto Array con una matriz unidimensional de textos, la matriz unidimensional bebidas contiene tres elementos y una longitud de tres:
bebidas = ["Café", "Té", "Chocolate"];
Puede contruir una matriz unidimensional de dos o más elementos comenzando con el índice 0 si define valores iniciales para todos los elementos. El siguiente código crea una matriz unidimensional con tres elementos:
miMatriz = new Array("Hola", miVariable, 3.14159);
Indexando una matriz unidimensional
Indexe una matriz unidimensional por sus números ordinales. Por ejemplo, se asume que define la siguiente matriz unidimensional:
miMatriz = new Array("Viento", "Lluvia", "Fuego");
Puede referirse a los elementos de esta forma:
miMatriz[0]
es el primer elementomiMatriz
[1]
es el segundo elementomiMatriz
[2]
es el tercer elemento
Especificando un sólo parámetro
Cuando especifica un único parámetro numérico con el constructor de un Array
, especifica la longitud inicial de la matriz unidimensional. El siguiente código crea una matriz unidimensional de cinco elementos:
Métodoconstructor = new Array(5);
El comportamiento del constructor de un Array
depende de si el único parámetro es un número.
- Si el valor especificado es un número, el constructor convierte el número a un tipo entero de 32-bits sin signo
unsigned
y genera una matriz unidimensional con la propiedad longitud (tamaño de la matriz unidimensional) convirtiéndolo en enterointeger
. La matriz unidimensional inicialmente no contiene elementos, aún cuando se piense que se puede tener un valor de longitud distinto de cero.
- Si el valor especificado no es un número, una matriz unidimensional de longitud es creado, con el primer elemento teniendo el valor especificado.
El siguiente código crea una matriz unidimensional de longitud 25, luego asigna los valores para los tres primeros elementos:
Tipomúsica = new Array(25); Tipomúsica[0] = "R&B"; Tipomúsica[1] = "Blues"; Tipomúsica[2] = "Jazz";
Incrementar la longitud de una matriz unidimensional indirectamente
La longitud de una matriz unidimensional se incrementa si se asigna un valor a un elemento mayor que la longitud actual de una matriz unidimensional. El siguiente código crea una matriz unidimensional de longitud cero 0, luego asigna un valor al elemento 99. Esto cambia la longitudo de una matriz unidimensional a 100.
colores = new Array(); colores[99] = "amarillopatito";
Creación de una matriz unidimensional utilizando el resultado de una coincidencia encontrada
El resultado de una coincidencia String.match
entre una expresión regular y una cadena puede crear una matriz unidimensional. Esta matriz unidimensional posee propiedades y elementos que proveen de información acerca de la coincidencia. Una matriz unidimensional es el valor retornado por la ejecución de una expresión regular String.exec
, cadena coincidente String.match
y cadena remplazante String.replace
. Para explicar como ayudan estas propiedades y elementos, véase el siguiente ejemplo y refiérase a la table a continuación:
// Coincidencia de una d seguida de uno o más b seguida de una d // Recordar las coincidencias de b y la siguiente d // Ignorar el resto del caso miexpresiónRegular = /d(b+)(d)/i; miMatriz = miexpresiónRegular.exec("cdbBdbsbz");
Las propiedades y elementos retornados desde una coincidencia son las siguientes:
Propiedad/Elemento | Descripción | Ejemplo |
input |
Una propiedad sólo de lectura que refleja la cadena original con la expresión regular que fue coincidente. | cdbBdbsbz |
index |
Una propiedad sólo de lectura que está basada en cero su índice de las cadenas coincidentes. | 1 |
[0] |
Un elemento sólo de lectura que especifica los últimos caracteres coincidentes. | dbBd |
[1], ...[n] |
Elemento sólo de lectura que especifica las cadenas coincidentes parentizadas, si son incluidas en la expresión regular. El número de las posibles cadenas parentizadas es ilimitado. | [1]: bB [2]: d |
Propiedades
-
Array.constructor
- Especifica la función que crea un prototipo de Objeto.
Array.length
- Refleja el número de elementos en una matriz unidimensional.
Array.prototype
- Permite la adición de propiedades a todos los objetos.
Métodos
Array.from()
- Crea un nuevo Array de un objeto iterable o parecido a un array.
Array.isArray()
- Devuelve true si una variable es un Array, de lo contrario devuelve false.
Array.observe()
- Observa los cambios del Array asincronicamente, similar a
Object.observe()
para los objetos. Provee un flujo de cambio en orden. Array.of()
- Crea un nuevo Array con un numero de argumentos variable, sin importar numero o tipo de argumentos.
Métodos transformadores [Mutator]
Estos métodos modifican la matriz unidimensional:
-
Array.prototype.pop()
- Elimina el último elemento de una matriz unidimensional y retorna este elemento.
Array.prototype.push()
- Añade uno o más elementos al final de una matriz unidimensional y retorna la nueva longitud de una matriz unidimensional.
Array.prototype.reverse()
- Invierte el orden de los elementos de una matriz unidimensional - el primero llega a ser el último y el último llega aser el primero.
Array.prototype.shift()
- Elimina el primer elemento de una matriz unidimensional y retorna este elemento.
Array.prototype.sort()
- Ordena los elementos de una matriz unidimensional.
Array.prototype.splice()
- Añade y/o elimina elementos de una matriz unidimensional.
Array.prototype.unshift()
- Añade uno o más elementos al comienzo de una matriz unidimensional y retorna la nueva longitud de la matriz unidimensional.
Métodos accesores [Accessor methods]
Estos métodos no modifican una matriz unidimensional y retornan alguna representación de la matriz unidimensional.
-
Array.prototype.concat()
- Devuelve un nueva matriz unidimensional que comprende esta matriz unidimensional unida con otras matriz unidimensionales y/o valores.
Array.prototype.join()
- Une todos los elementos de una matriz unidimensional en una cadena.
Array.prototype.slice()
- Extrae una sección de una matriz unidimensional y devuelve una nueva matriz unidimensional.
Array.prototype.toSource()
- Devuelve una matriz unidimensional literal representando la matriz unidimensional especificada; puede utilizar este valor para crea una nueva matriz unidimensional. Sobre escribe al método
Object.toSource()
. Array.prototype.toString()
- Devuelve una cadena representando la matriz unidimensional y sus elementos. Sobre escribe el método
Object.toString()
. Array.prototype.valueOf
- Devuelve el valor primitivo de una matriz unidimensional. Sobre escribe el método
Object.valueOf()
.
-
Array.prototype.indexOf()
- Devuelve el primer índice (el menor) de un elemento dentro de una matriz unidimensional igual al valor especificado, o -1 si ninguno es encontrado.
Array.prototype.lastIndexOf()
- Devuelve el último índice (el mayor) de un elemento dentro de una matriz unidimensional igual al valor especificado, o -1 si ninguno es encontrado.
Métodos de repetición
Varios métodos toman como argumentos funciones que son reinvocadas mientras se procesa la matriz unidimensional. Cuando estos métodos son invocados, la longitud length
de la matriz unidimensional se muestrea y cualquier elemento añadido más allá de esta longitud desde el interior de la reinvocación no es visitado. Otros cambios a la matriz unidimensional (configuración del un valor o la eliminación de un elemento) puede afectar los resultados de la operacion si el método visita luego el elemento cambiado. el comportamiento específico de estos métodos en tales casos no está siempre bien definido y no debería confiarse sobre ello.
-
Array.prototype.filter()
- Crea una nueva matriz unidimensional con todos los elementos de esta matriz unidimensional para los cuales la funcion de filtrado provista devuelve
true
. Array.prototype.forEach()
- Invoca a una funcion por cada elemento en la matriz unidimensional.
Array.prototype.every
- Devuelve verdadero
true
si cada elemento en esta matriz unidimensional satisface la función de pruebastesting
provista. Array.prototype.map
- Crea una nueva matriz unidimensional con los resultados de la invocación de una funcion provista sobre cda elemento en esta matriz unidimensional.
Array.prototype.some
- Retorna verdadero
true
si al menos un elemento en esta matriz unidimensional satisface la función de pruebas provista.
Métodos en general
Muchos métodos para el objeto Array de JavaScript están diseñados para ser aplicados generalmente a todos los objetos los cuales "se asemejan" a las matrices unidimensionales. Esto es, pueden ser utilizados sobre cualquier objeto que tenga una propiedad de length
que indique la longitud y los cuales pueden ser útiles para ser accedidos utilizando nombres de propiedades numéricas (tal como con la indexación array[5]
).
POR HACER: dar ejemplos con Array.prototype.forEach.call y añadir el método a un objeto como String
.
Algunos métodos, tales como join()
, únicamente leen la longitud length
y las propiedades numéricas del objeto son invocadas. Otros, como reverse()
, requieren que las propiedades numéricas del objeto y la longitud length
sean mutables; estos métodos pueden sin embargo no ser invocados sobre objetos como String
, los cuales no permiten que su propiedad length
o propiedades numéricas sintetizadas sean configuradas.
Los métodos que trabajan sobre cualquier matriz unidimensional como objeto y no necesitan alterar las propiedades numéricas o la longitud length
son:
Array.prototype.concat()
,Array.prototype.every()
(JS 1.6+)Array.prototype.filter()
(JS 1.6+)Array.prototype.forEach()
(JS 1.6+)Array.prototype.indexOf()
(JS 1.6+)Array.prototype.join()
Array.prototype.lastIndexOf()
(JS 1.6+)Array.prototype.map()
(JS 1.6+)Array.prototype.slice()
Array.prototype.some()
(JS 1.6+)Array.prototype.toSource()
Array.prototype.toString()
Array.prototype.valueOf()
Los métodos que alteran las propiedades numéricas o la longitud length
de un objeto son invocados como:
Array.prototype.pop()
Array.prototype.push()
Array.prototype.reverse()
Array.prototype.shift()
Array.prototype.sort()
Array.prototype.splice()
Array.prototype.unshift()
Este ejemplo muestra como utilizar Array.prototype.map()
sobre un objeto String
para obtener una matriz unidimensional de bytes codificados en representación de valores de caracteres ASCII:
var a = Array.prototype.map.call("¡Hola Mundo!", function(x) { return x.charCodeAt(0); }) // y ahora igual a [72,101,108,108,111,32,87,111,114,108,100]
Ejemplos
Creación de una matriz unidimensional
el siguiente ejemplo crea una matriz, msgArray
, con una longitud de 0, luego asigna valores para msgArray[0]
y msgArray[99]
, cambiando la longitud de la matriz unidimensional a 100.
var msgMatriz = new Array(); msgMatriz[0] = "Hola"; msgMatriz[99] = "mundo"; // La sentencia siguiene es verdadera, // debido al elemento msgMatriz[99] definido. if (msgMatriz.length == 100) myVar = "La longitud es 100.";
Creación de una matriz de dos dimensiones
El siguiente ejemplo crea una matriz bidimensional y asigna el resultado a myVar
.
var myVar = "Prueba de una matriz multidimensional;"; var nb = 4; var a = new Array(nb); // crea una matriz de longitud 4 for (var i = 0; i < nb; i++) { a[i] = new Array(nb); // define cada elemento como una matriz de longitud 4 for (var j = 0; j < nb; j++) { a[i][j] = "[" + i + "," + j + "]"; // asigna a cada elemento de la matriz bidimensional // los valores de i y j } } for (var i = 0; i < nb; i++) { var str = "Fila " + i + ":"; for (var j = 0; j < nb; j++) { str += a[i][j]; // añade a la cadena el contenido de la matriz bidimensional } myVar += str + "; "; // añade a la cadena original el resultado obtenido por cada iteración }
La siguiente cadena es asignada a myVar
(las líneas separadas son usadas por legilibilidad):
Prueba de una matriz multidimensional; Fila 0: [0,0][0,1][0,2][0,3]; Fila 1: [1,0][1,1][1,2][1,3]; Fila 2: [2,0][2,1][2,2][2,3]; Fila 3: [3,0][3,1][3,2][3,3];
También intente con nb = 8
y véase como se expande.