2011-06-03 8 views
5

En JavaScript, si establece una matriz para que sea del tamaño 5 (var foo = new Array(5);), ¿es solo un tamaño inicial? ¿Puedes expandir la cantidad de elementos después de crearlos? ¿Es posible hacer algo como esto también - arr = new Array() y luego simplemente asignar elementos uno por uno? Gracias de antemano :-)¿Cómo funcionan los tamaños de matriz en Javascript?

Respuesta

5

Sí, es simplemente un tamaño inicial, y no se requiere. Si no usa un solo número, puede completarlo inmediatamente.

También es más común utilizar la sintaxis [] más simple.

var arr = ['something', 34, 'hello']; 

Puede ajustar (o cambiar) un índice específico mediante el uso de paréntesis:

arr[0] = "I'm here replacing whatever your first item was"; 

Puede agregar hasta el final mediante el uso de empuje:

arr.push('add me'); 

Puede haber un rendimiento más rápido en algunos navegadores, si lo hace de esta manera:

arr[arr.length] = 'add me'; 

Puede agregar algo en cualquier índice.

Usted puede eliminar un elemento completamente el uso de empalme:

arr.splice(0, 1); // remove first item in the array (start at index 0, with 1 being removed) 
+0

¿Es [] como una matriz anónima? – rubixibuc

+0

@rubixibuc: No, es una matriz literal. –

+0

¿Cuál es la diferencia entre una matriz literal y una matriz anónima? (sry si esta es una pregunta tonta: - /) – rubixibuc

5

Cuando des una nueva matriz un tamaño explícito en javascript (usando new Array(5)), se rellenan de cada índice con valor de undefined. En general, se considera mejor práctica para crear una instancia utilizando la matriz literal [] expresión:

var arr = []; 

A continuación, se puede insertar nuevos elementos utilizando push()

var arr = []; 
arr.push('first value'): 
arr.push('second value'): 

Mira la documentación de matriz MDC para obtener más información: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array

+1

real Al escribir 'new Array (5)', cada índice todavía está 'undefined' (que es diferente de' null'). Es más como hacer 'var arr = []; arr.length = 5; '. –

+0

Ah sí, indefinido en lugar de nulo. Corregirá –

1

Compruebe the documentation for Array, pero la respuesta simple a su pregunta es .

var arr5 = new Array(1, 2, 3, 4, 5); // an array with initial 5 elements 
var arr = new Array(); // an array without initial 

También puede utilizar literales de matriz:

var arr5 = [1, 2, 3, 4, 5]; 
var arr = []; 
+0

Solo quería enfatizar que la 'nueva versión de Array (5)' es ** no ** idéntica a '[1, 2, 3, 4, 5]'! –

+0

@Felix, tienes toda la razón. Mis días de Java se activaron. He actualizado mi respuesta. –

2

Hay un par de formas de declarar y poner valores en una matriz.

En primer lugar, como lo que quiere hacer,

var myarr = new Array(); 
myarr[0] = 'element1'; 
myarr[1] = 'element2'; 
myarr[2] = 'element3'; 

segunda manera es definirlos

var myarr =new Array("element1","element2","element3"); 

y la tercera es similar a la segunda

var myarr =["element1","element2","element3"]; 

También puede comprobar https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array para obtener un poco más de información sobre el uso de las matrices también. Podrías usar push y pop si quisieras también.

Si usa jquery o mootools, también tienen funciones incorporadas para realizar en matrices, http://api.jquery.com/jQuery.each/ por ejemplo.

0

Las matrices son dinámicas en JavaScript. No tiene que inicializarlos con una cierta longitud. De hecho, usted debe usar la notación literal [] debido a la ambigüedad de la Array del constructor:

Si pasa un solo parámetro a Array, fijará la longitud del arreglo a este parámetro. Si pasa más de un parámetro, estos elementos se agregan a la matriz.

¿Cómo se determina el tamaño de la matriz?

El tamaño de una matriz es el índice más alto + 1. Esto puede ser bastante confuso. Considere esto:

var arr = []; 
arr[41] = 'The answer?'; 
console.log(arr); // [undefined, undefined, ..., 'The answer?'] 
console.log(arr.length) // 42 

Incluso puede configurar la longitud a sí mismo mediante la asignación de un número a .length:

arr.length = 99; 

Si ahora añade un nuevo elemento utilizando arr.push(), se obtendrá el índice 100 y la longitud incrementará. Cada vez que agrega un elemento a la matriz a través de un índice, se prueba si arr.length es más pequeño que el índice y se actualiza en consecuencia. Pero no se hace más pequeño.

De hecho, lo que var arr = new Array(5) está haciendo es establecer la longitud de la matriz en 5. Nada más.


Para obtener más información sobre cómo crear y poblar matrices, sugiero leer sobre él en el MDC JavaScript Guide.

Cuestiones relacionadas