从对象javascript在对象中创建数组

时间:2014-02-28 17:35:09

标签: javascript javascript-objects

我有一个看起来像这样的对象:

message = {
    date: "12-12-12"                                    
    time: "12:05:10",                                   
    name: "Wence",                              
    message: "hey man how are u doing?"
}

现在,我想创建一个如下所示的新对象:

var messages = {"Wence":["hey man how are u doing?","Thanks. I'm fine too.", "are you up for a game of pokémon?"], "Bas":["Hey! Doing fine. How about you?","sure"]}

这样做之后,我需要循环通过对象并逐个过滤消息。我需要能够显示例如“Wence”或“Bas”在其消息中发送任何图片(数组中的值是1条消息)。我想这是最好的方法,但我愿意接受任何建议。

任何帮助都很受欢迎。

2 个答案:

答案 0 :(得分:1)

您首先要创建一个空对象作为表格:

var messages = {} //creates a new empty object

您必须为每个用户初始化列表:

messages["Wence"] = [] //initialize Wence's messages to an empty list.

然后,当您需要时,您可以添加到此列表中 - 就像您对任何列表一样:

messages["Wence"].push("how are you?")

而且,当你需要时,你可以循环它。如果你想循环遍历每个用户的消息,你想要一个这样的嵌套循环:

for(var username in messages){
   for(var i=0, len = messages[username].length; i<len; i++){
       var msg = messages[username][i]
  }
}

答案 1 :(得分:0)

尝试此功能:

function getMessagesByPerson(obj) {
    var data = {}, item;
    for (var i = 0; i < obj.length; i++) {
         item = obj[i];

         if (!data.hasOwnProperty(item.name)) {
        data[obj.name] = [];
        }

         data[obj.name].push(obj.message);
    }
    return data;
}

这将完全返回您想要的输出。