0

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

1 回答 1

1

只需遍历数组并将值添加到新对象

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

这是一个小提琴

于 2013-10-14T12:00:40.233 回答