2011-12-19 11 views
10

Allexamples agregando elementos nuevos a matrices asociativas van por el camino "fácil" y solo tienen una matriz unidimensional - mi problema de comprensión es tener matrices dentro de matrices (o ¿son objetos en matrices?)Agregar elemento a matrices asociativas

tengo la siguiente matriz:

var test = [ 
      { 
       value: "FirstVal", 
       label: "My Label 1" 
      }, 
      { 
       value: "SecondVal", 
       label: "My Label 2" 
      } 
      ]; 

dos preguntas: ¿Cómo generar esta matriz de matrices asociativas (sí ... objeto) de cero? ¿Cómo agregar un nuevo elemento a una matriz existente?

Gracias por ayudarme a entender javascript.

+1

¿Qué significa scratch_ _from? – SLaks

+1

Esto podría ser útil: [Javascript: Agregar a una matriz asociativa] (http://stackoverflow.com/questions/8328508/javascript-adding-to-an-associative-array/8328541#8328541) – jabclab

+0

Mala redacción ... "desde cero" simplemente significa - nuevo. Básicamente es lo mismo que comenzar con una matriz vacía y agregar elementos a ella; tus respuestas ya responden esto :-) –

Respuesta

10

No estoy exactamente seguro de lo que entendemos por "partir de cero", pero esto funcionaría:

var test = []; // new array 

test.push({ 
       value: "FirstVal", 
       label: "My Label 1" 
      }); // add a new object 

test.push({ 
       value: "SecondVal", 
       label: "My Label 2" 
      }); // add a new object 

aunque la sintaxis informados es una forma perfectamente válida de crearlo "lado a otro m scratch ".

Y agregar un nuevo elemento funcionaría de la misma manera test.push({..something...});.

4

Esta es una matriz de objetos.

se puede poner más objetos en él llamando test.push({ ... })

+0

"matriz de objetos": gracias por aclarar. Básicamente objetos sin nombre, debido a {}? –

+1

@moontear: No existe tal cosa como un "objeto nombrado". – SLaks

+0

Entendido, se leerá en él. –

1

Desde el principio, las siguientes líneas crearán una rellenar una matriz con los objetos, utilizando el método Array.prototype.push:

var test = [];   // Create an array 
var obj = {};   // Create an object 
obj.value = "FirstVal"; // Add values, etc. 
test.push(obj); 
+0

Corrija su script para usar newobj también – mplungjan

2
var items = [{name:"name1", data:"data1"}, 
      {name:"name2", data:"data2"}, 
      {name:"name3", data:"data3"}, 
      {name:"name4", data:"data4"}, 
      {name:"name5", data:"data5"}] 

var test = []; 

for(var i = 0; i < items.length; i++){ 
    var item = {}; 
    item.label = items[i].name; 
    item.value = items[i].data; 
    test.push(item); 
} 

hace prueba igual a

[{label:"name1", value:"data1"}, 
{label:"name2", value:"data2"}, 
{label:"name3", value:"data3"}, 
{label:"name4", value:"data4"}, 
{label:"name5", value:"data5"}] 
Cuestiones relacionadas