2010-01-03 24 views
225

En PHP, me gustaría hacer algo como:Añadir nuevo valor a un array existente en JavaScript

$array = array(); 
$array[] = "value1"; 
$array[] = "value2"; 
$array[] = "value3"; 

¿Cómo voy a hacer lo mismo en JavaScript?

+59

jQuery no es un idioma; JavaScript es. – mpen

+79

http://i.stack.imgur.com/ssRUr.gif – Broxzier

+4

@ChrisB - para aquellos que se preguntan, Javascript es el lenguaje utilizado para implementar el glorioso JQuery. – Davor

Respuesta

350

No necesita jQuery para eso. Usar javascript regulares

var arr = new Array(); 
// or var arr = []; 
arr.push('value1'); 
arr.push('value2'); 

Nota: En Javascript, también se puede utilizar objetos como matrices, pero todavía tienen acceso a los prototipos de matriz. Esto hace que el objeto se comporta como una matriz:

var obj = new Object(); 
Array.prototype.push.call(obj, 'value'); 

creará un objeto que se parece a:

{ 
    0: 'value', 
    length: 1 
} 

Puede acceder a los vaules al igual que una variedad normal de f.ex obj[0].

+5

que es exactamente cómo funciona el objeto "jQuery" devuelto por '$()' –

+1

Bueno, estoy seguro de que hay un complemento que le permite hacer eso con jQuery: P –

+75

¿Qué tal ''] en lugar de 'nueva matriz() 'y' {} 'en lugar de' new Object() '... – James

11

Puede utilizar el .push() método (que es estándar JavaScript)

por ejemplo

var primates = new Array(); 
primates.push('monkey'); 
primates.push('chimp'); 
100

Esto no tiene nada que ver con jQuery, solo JavaScript en general.

para crear una matriz de JavaScript:

var a = []; 

O:

var a = ['value1', 'value2', 'value3']; 

para anexar los valores en el extremo de la matriz existente:

a.push('value4'); 

Para crear una nueva matriz, realmente debería usar [] en lugar de new Array() por las siguientes razones:

  • new Array(1, 2) es equivalente a [1, 2], pero es new Array(1)no equivalente a [1]. Más bien, el último está más cerca de [undefined], ya que un único argumento entero para el constructor Array indica la longitud de matriz deseada.
  • Array, al igual que cualquier otra clase incorporada de JavaScript, no es una palabra clave. Por lo tanto, alguien podría definir fácilmente Array en su código para hacer algo más que construir una matriz.
+37

+1 para '[]' en lugar de 'new Array()'. – BalusC

1
array = ["value1", "value2", "value3"] 

que no es tanto como jQuery JavaScript

+1

que no * agrega * ningún valor a una matriz, eso está creando una matriz con algunos valores que ya están en ella. – nickf

+1

No me gustaría menospreciarlo, pero gracias por al menos explicar tu opinión –

0

jQuery es una abstracción de JavaScript. Piense en jQuery como un subconjunto de JavaScript, destinado a trabajar con el DOM. Habiendo dicho eso; hay funciones para agregar artículo (s) a una colección. Aunque usaría JavaScript básico en su caso:

var array; 

array[0] = "value1"; 
array[1] = "value2"; 
array[2] = "value3"; 

...O:

var array = ["value1", "value2", "value3"]; 

... O:

var array = []; 

array.push("value1"); 
array.push("value2"); 
array.push("value3"); 
+5

Lo llamaría un "marco" ... y tampoco es un subconjunto. – mpen

+0

Debe inicializar la variable 'array' a un objeto' Array' en su primer ejemplo; de lo contrario, 'undefined' y no podrá invocar' push' en él. –

+0

@Ionut G. Stan: estoy inicializando la matriz haciendo 'var array = [];' – roosteronacid

30

array es un objeto nativo de JavaScript, ¿por qué no sólo tratar de utilizar la API de ella? Conocer API por sí mismo le ahorrará tiempo cuando cambie a JavaScript puro u otro marco.

Existen varias posibilidades diferentes, por lo tanto, use la que más se ajuste a sus necesidades.

Creación de matriz con valores:

var array = ["value1", "value2", "value3"]; 

Adición de valores al final

var array = []; 
array.push("value1"); 
array.push("value2"); 
array.push("value3"); 

Adición de valores a los de empezar:

var array = []; 
array.unshift("value1"); 
array.unshift("value2"); 
array.unshift("value3"); 

valores Agregando en algún índice:

var array = []; 
array[index] = "value1"; 

o mediante el uso de empalme

array.splice(index, 0, "value1", "value2", "value3"); 

Elija uno necesita.

+0

El que tiene índices no funciona para mí. Lo estoy usando dentro de una función de mapa $ ('select [id^= "filter _"]'). Map (function() { var name = $ (this) .prop ('name'); filters [name] = $ (this) .val(); –

10

Hay varias maneras:

instancia del array:

var arr; 

arr = new Array(); // empty array 

// --- 

arr = [];   // empty array 

// --- 

arr = new Array(3); 
alert(arr.length); // 3 
alert(arr[0]); // undefined 

// --- 

arr = [3]; 
alert(arr.length); // 1 
alert(arr[0]); // 3 

Empujar a la matriz:

arr = [3];  // arr == [3] 
arr[1] = 4; // arr == [3, 4] 
arr[2] = 5; // arr == [3, 4, 5] 
arr[4] = 7; // arr == [3, 4, 5, undefined, 7] 

// --- 

arr = [3]; 
arr.push(4);  // arr == [3, 4] 
arr.push(5);  // arr == [3, 4, 5] 
arr.push(6, 7, 8); // arr == [3, 4, 5, 6, 7, 8] 

Usando .push() es la mejor manera de añadir a una matriz, ya que no necesita saber cuántos elementos ya están allí, un d puede agregar muchos elementos en una llamada a función.

1

De hecho, debe inicializar su matriz y luego utilizar la línea de comandos array.push().

var array = new Array(); 
array.push("first value"); 
array.push("second value"); 
Cuestiones relacionadas