2010-06-11 190 views
6

我已經創建了一個數組:如何將值添加到JSON對象?

var msg = new Array(); 

然後,我有一個值添加到這個陣列的功能,這個功能是:

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

    msg.push(message);   
} 

正如你可以看到,如果陣列有50個或更多元素我刪除第一個與.shift()。 然後我添加一個數組作爲元素。

好的,代碼完美的工作,但現在我必須循環msg數組來創建一個JSON對象。

的JSON對象應具有以下格式:

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

我的意思是......我必須循環味精數組,然後存儲JSON對象內的所有值。 我不知道如何「連接」json obj中數組的元素。

你能幫我嗎?

非常感謝您提前!

+1

它通常是更好地初始化數組像這樣的'無功味精= [];'而不是'無功味精=新的陣列();' – RaYell 2010-06-11 08:21:36

回答

9

我給你舉個例子,從你的附加功能:

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);   
} 

正如你可以看到消息變量不再是一個數組,但它是你希望它是對象。

由此你應該能夠計算出如何創建一個新的數組並添加你想要的值。

+0

好吧,但是,它後,味精是一個數組,不是一個JSON對象...如何轉換? – Damiano 2010-06-11 09:26:58

1

試試這個:

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

我想你想是這樣的:

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

    msg.push(message);   
}