这就是我目前正在做的事情:
var Messages = function(data) {
//dont change the order variable initialized
var total = data.totalmessages;
var data = data.messages;
var counter = data.length;
var mappedData = [];
var attachment = [];
var location = [];
var id = 0;
for (var i = 0; i < counter; i++) {
//attachment
if (data[i].attachments.length > 0) {
for (var j = 0; j < data[i].attachments.length; j++) {
id = data[i].id;
if (data[i].id == id) {
attachment.push({
'fileId': data[i].attachments[j].id,
'filename':data[i].attachments[j].name,
'messageId': data[i].id
});
}
}
}
//location
if (data[i].locations.length > 0) {
for (var k = 0; k < data[i].locations.length; k++) {
id = data[i].id;
if (data[i].id == id) {
location.push({
'locationId': data[i].locations[k].id,
'add':data[i].locations[k].add,
'messageId': data[i].id
});
}
}
}
mappedData.push({
'id': data[i].id,
'name': data[i].name,
'attachment': attachment,
'location': location
});
}
var obj = {
"template": config.templates.messagesBody,
"data": mappedData,
"totalItem": total
}
return obj;
};
上面发生的是,我正在循环通过消息进行对话。在消息内部,可能存在某些消息的附件和位置。
我可以正确浏览主要数组的消息。但我不知道如何遍历特定消息的附件和位置。在上面的方法中,假设我有5条消息。其中只有2个有附件或位置。当我最终组成由消息(return obj
)组成的对象时,所有消息都有附件和位置。