使用JavaScript将事件拆分为月份
我有一个mongodb集合,所有即将到来的和过去的事件都在其中。然而,当我获取数据时,它会做它应该做的事情,并以数组的形式返回查询,然后我转向JSON(发送到我的html iphone应用程序) 我想知道的是,在我运行mongodb查询之后,如何分割日期并将每个月的事件分组到不同的JSON中 下面是一个JSON示例使用JavaScript将事件拆分为月份,javascript,json,mongodb,Javascript,Json,Mongodb,我有一个mongodb集合,所有即将到来的和过去的事件都在其中。然而,当我获取数据时,它会做它应该做的事情,并以数组的形式返回查询,然后我转向JSON(发送到我的html iphone应用程序) 我想知道的是,在我运行mongodb查询之后,如何分割日期并将每个月的事件分组到不同的JSON中 下面是一个JSON示例 { "date": "01/11/2013", "event": "Event Name", "desc": "Sample DESC." },{ "dat
{
"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>";
}
var newsreponse=JSON.parse(xmlhttp.responseText);
对于(变量i=0,len=newsreponse.length;ivar 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 );
}
var原始=[{
“日期”:“2013年11月1日”,
“事件”:“事件名称”,
“描述”:“样本描述”
},{
“日期”:“2013年12月7日”,
“事件”:“事件名称”,
“描述”:“样本描述”
}];
风险值月份=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”]
var有序={};
对于(变量i=0,len=raw.length;i
这里有一个非常抱歉!但我无法理解你想要达到的目标!:(很抱歉,虽然这会把月份和事件放在下面,但我没有办法做for循环来调用每一个,除非我遗漏了什么。因为每个数组都是从月份开始的,也许我的javascript技能不知道如何做,我习惯在做for循环时使用相同的键。你到底是什么意思?你在尝试什么g要完成吗?只需打印这个东西?有很多不同的方法可以实现。这里有一个快速解决方案。无论如何,我可以通过一个简单的循环来实现,因为我想做一些其他的事情,我不知道如何在代码中调用每个键值,可能只是缺乏技巧,我会在我通常做的事情之上发布,然后你可以看到什么我的技能是。很抱歉,你用同样的方法来做,你仍然需要一个对象来保存你有哪些月份和没有哪些月份的引用,但是你可以直接指向dom元素而不是数组项。