如何在javascript

时间:2018-01-25 12:53:32

标签: javascript javascript-objects

我正在尝试从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年有很多个月,但你可以看到它只覆盖了最后一个月。所以我只能从循环中得到一年中的最后一个月。 我怎样才能列出所有月份?

非常感谢任何想法或帮助。 谢谢。

编辑:键不相同,这是日志的图片 enter image description here

1 个答案:

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