我有一个mongodb集合,所有即将到来和过去的事件都在其中。然而,当我获取数据时,它会执行它应该做的事情并将查询作为数组返回,然后我转向JSON(发送到我的html iphone应用程序)。
我想知道的是,在运行我的mongodb查询后,将日期分组并将每个月的事件分组到不同的JSON中。
这是一个示例JSON。
{
"date": "01/11/2013",
"event": "Event Name",
"desc": "Sample DESC."
},{
"date": "07/12/2013",
"event": "Event Name",
"desc": "Sample DESC."
},
在基本术语中我想显示像
这样的列表November
1: event title
December
7: event title
我想如果我分开日期,但后来我意识到这根本不会有帮助,只会分开日期。
我不是要求有人编写代码,我用的是如何将日期分组到不同的json字符串中。
应该看起来像
<div>MONTH</div>
<div>EVENT</div>
或多个事件
<div>MONTH</div>
<div>EVENT</div>
<div>EVENT</div>
<div>EVENT</div>
<div>EVENT</div>
<div>EVENT</div>
这就是我通常在Javascript中编辑JSON字符串的方式。
var newsreponse = JSON.parse(xmlhttp.responseText);
for (var i = 0, len = newsreponse.length; i < len; ++i) {
var news = newsreponse[i];
if(i % 2 == 0){
cssclass = "even";
}
else
{
cssclass = "odd";
}
// alert(news.featured_image);
document.getElementById("activecontent").innerHTML += "<div class='news " + cssclass + "'><div class='newstitle'><div class='newstitlecolor'>" + news.post_title + "</div></div><div class='base' style='background: url('" + news.featured_image + "');'><img src='" + news.featured_image + "' style='width:100%; height:100%;'/></div></div>";
}
答案 0 :(得分:0)
只需遍历数组并将值添加到新对象
var raw = [{
"date": "01/11/2013",
"event": "Event Name",
"desc": "Sample DESC."
},{
"date": "07/12/2013",
"event": "Event Name",
"desc": "Sample DESC."
}];
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
var ordered = {};
for( var i = 0, len = raw.length; i < len; i++ ) {
var entry = raw[i];
var m = parseInt(entry.date.split("/")[1])-1;
if( !ordered[months[m]] ) { ordered[months[m]] = []; }
ordered[months[m]].push( entry );
}
这是fiddle