使用JavaScript将事件分成几个月

时间:2013-10-14 11:50:59

标签: javascript json mongodb

我有一个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>";
    }

1 个答案:

答案 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