如何向JSON对象添加值?

6
我已经创建了一个数组,其中包含:
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}
]

我的意思是...我需要循环msg数组,然后将所有的值存储在JSON对象中。

我不知道如何在json对象内部“连接”数组元素。

你能帮我吗?

非常感谢您提前的帮助!


1
通常最好像这样初始化数组 var msg = []; 而不是 var msg = new Array(); - RaYell
3个回答

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

正如您所看到的,message变量不再是一个数组,而是您想要的对象。

从这里,您应该能够推断出如何创建一个新数组并向其中添加所需的值。


好的,但是在msg之后是一个数组,而不是JSON对象...如何转换? - Damiano

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接