我正在尝试从google blogger api创建一个存档系统。我有来自博主的所有帖子的json数据。这是我尝试过的代码。
var archive= {};
if("entry" in TotalFeed.feed)
{
var PostEntries=TotalFeed.feed.entry.length;
for(var PostNum=0; PostNum<PostEntries ; PostNum++)
{
var ThisPost = TotalFeed.feed.entry[PostNum];
var key=ThisPost.published.$t.substring(0,4);
var MonthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];
var m=ThisPost.published.$t.substring(5,7);
var NameOfMonth = MonthNames[parseInt(m)-1];
archive[key] = {
[NameOfMonth]: 1
}
}
}
console.log(archive);
此代码的结果是
2011:{May: "1"},
2012:{January: "1"},
2013:{January: "1"}
2011年有很多个月,但你可以看到它只覆盖了最后一个月。所以我只能从循环中得到一年中的最后一个月。 我怎样才能列出所有月份?
非常感谢任何想法或帮助。 谢谢。
答案 0 :(得分:1)
您需要一个更深层的对象,而且您也不会检查archive[key]
是否已经存在,所以如果有,则覆盖它。
尝试类似
的内容// existing year object or create it
archive[key] = archive[key] || {};
//existing month array or create it
archive[key][NameOfMonth] = archive[key][NameOfMonth] || [];
// push item to appropriate month array
archive[key][NameOfMonth].push(ThisPost)
或者只计算年/月的条目:
// existing year object or create it
archive[key] = archive[key] || {};
//existing month property or create it then increment count
archive[key][NameOfMonth] = (archive[key][NameOfMonth] || 0) +1;