list[year][month].push( item );这句话很明显错误了,你的year是11,先不说month是多少,list[11]这个本身就是undefined了,再取一个month就变成undefined[month],当然会出错了
var data = [];
data.push({
'date': '1992-11-10',
'intro': '我出生啦!',
'media': ''
})
var list = {};
for (var i = 0; i < data.length; i++) {
var date = new Date(data[i].date);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var item = data[i];
item.year = year;
item.month = month;
if(!list[String(year)]) list[String(year)]={};
if(!list[String(year)][String(month)]) list[String(year)][String(month)]=[];
list[String(year)][String(month)].push(item);
};
console.log(list);
调试成功
push方法时你自己创建的嘛?
建议查阅date的构造器