2010-06-11 25 views
6

he creado una matriz con:¿Cómo agregar valores a un objeto JSON?

var msg = new Array(); 

entonces, tengo una función que añadir los valores de esta matriz, esta función es:

function add(time, user, text){ 
    var message = [time, user, text]; 
    if (msg.length >= 50) 
     msg.shift(); 

    msg.push(message);   
} 

Como se puede ver, si la matriz tiene 50 o más elementos elimino el primero con .shift(). Luego agrego una matriz como elemento.

Ok, el código funciona perfectamente, pero ahora tengo que bucle de la matriz msg para crear un obj JSON.

El objeto JSON debe tiene este formato:

var obj = [ 
{'time' : time, 'user' : user, 'text' : text}, 
{'time' : time, 'user' : user, 'text' : text}, 
{'time' : time, 'user' : user, 'text' : text} 
] 

quiero decir ... tengo que msg gama de bucle y luego almacenar todos los valores dentro del objeto JSON. No sé cómo "concatenar" el elemento de la matriz dentro de json obj.

¿Me podría ayudar?

¡Muchas gracias de antemano!

+1

Por lo general es mejor para inicializar serie como esta 'msg var = [];' en lugar de 'msg var = new Array(); ' – RaYell

Respuesta

9

Te daré un ejemplo de su función de complemento:

function add(time, user, text){ 
    // this line is all I changed 
    var message = {'time' : time, 'user' : user, 'text' : text}; 

    if (msg.length >= 50) 
     msg.shift(); 

    msg.push(message);   
} 

Como se puede ver la variable mensaje ya no es un array pero es el objeto que desea que sea.

De esto usted debe ser capaz de encontrar la manera de crear un nuevo array y añadir los valores que desee a la misma.

+0

ok, pero después de que msg es una matriz, no un objeto JSON ... ¿cómo convertir? – Damiano

1

Prueba esto:

var len = msg.length; 
var obj = []; 
for (var i = 0; i < len; i++) { 
    var item = { 
     'time': msg[i][0], 
     'user': msg[i][1], 
     'text': msg[i][2] 
    } 
    obj.push(item); 
} 
0

Creo que quieres algo como esto:

function add(time, user, text){ 
    var message = {time:time, user:user, text:text}; 
    if (msg.length >= 50) 
    msg.shift(); 

    msg.push(message);   
} 
Cuestiones relacionadas