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.

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 elemento
  • miMatriz[1] es el segundo elemento
  • miMatriz[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 entero  integer. 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

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().
Los siguientes métodos han sido introducidos en JavaScript 1.6, para más detalles  Novedades en JavaScript 1.6.
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

Los siguientes métodos han sido introducidos en JavaScript 1.6, para más detalles  Novedades en JavaScript 1.6.

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á siempe 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 pruebas  testing 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:

Los métodos que alteran las propiedades numéricas o la longitud  length de un objeto son invocados como:

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.

Etiquetas y colaboradores del documento

Última actualización por: gfernandez,
Ocultar la barra lateral