【发布时间】:2021-03-28 07:36:32
【问题描述】:
我的预期输出是这样的,但是如果月份相同,新对象会覆盖旧对象。你能找出要解决的问题吗?
[
December: {
2: {
id: 2,
amount: 1000,
date: "2020-12-02 17:45:34"
},
5: {
id: 5,
amount: 200,
date: "2020-12-10 17:45:34"
}
},
November: {
1: {
id: 1,
amount: 500,
date: "2020-11-10 17:45:34"
},
4: {
id: 4,
amount: 100,
date: "2020-11-15 17:45:34"
},
},
October: {
3: {
id: 3,
amount: 500,
date: "2020-10-20 17:45:34"
}
}
]
这是我的代码,如果你能帮忙的话。会好很多
var data = [
{
id: 1,
amount: 500,
date: "2020-11-10 17:45:34"
},
{
id: 2,
amount: 1000,
date: "2020-12-02 17:45:34"
},
{
id: 3,
amount: 500,
date: "2020-10-20 17:45:34"
},
{
id: 4,
amount: 100,
date: "2020-11-15 17:45:34"
},
{
id: 5,
amount: 200,
date: "2020-12-10 17:45:34"
}
]
var monthNames = [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
];
var monthlyData = {};
var date = new Date();
var lastMonthsArray = [];
for (let x = 0; x < 12; x++) {
var MONTH = monthNames[date.getMonth()];
var YEAR = date.getFullYear();
lastMonthsArray.push(MONTH + " " + YEAR);
for (let i in data) {
var itemDate = new Date(data[i].date);
var itemMonth = monthNames[itemDate.getMonth()];
var itemYear = itemDate.getFullYear();
var list = data[i]
if (MONTH == itemMonth && YEAR == itemYear) {
console.log("matched", list.id);
monthlyData[itemMonth] = {};
monthlyData[itemMonth][list.id] = {
amount: list.amount,
id: list.id,
date: list.date
};
console.log("monthly data", monthlyData);
}
}
date.setMonth(date.getMonth() - 1);
}
在我的代码中,我有一个带日期的数据,我想显示所有数据,但按它们的月份名称分组。所以基本上如果他们是 12 月份的 6 个数据,他们应该进入一个键:December 命名对象。但在我的代码中,12 月份的前 5 个数据被彼此覆盖,只有第 6 个数据可见。
【问题讨论】:
-
你能分享你的预期输出吗?并删除垃圾邮件“aaaa”?并指定哪个对象被哪个对象覆盖?
标签: javascript arrays json object arraylist