【发布时间】:2018-07-28 22:56:54
【问题描述】:
我在 JS 中有一个简单的对象,以年为键,在月内。每个月里面,我都想存储信息。这是我的对象:
function generateYearMonths() {
var firstYear = 2012;
var todayDate = new Date(Date());
var lastYear = todayDate.getYear();
var yearsMonths = {}
var months = {}
for(var x=1; x<=12; x++) {
months[x.toString()] = {
totalExpenses: 0,
totalIncomes: 0,
totalBalance: 0
}
}
for(var x=firstYear; x<=lastYear; x++) {
yearsMonths[x] = months
}
return yearsMonths;
}
我想分配一年和一个月,例如 2012 年第 1 个月,它们是键、值。我这样做:
yearsMonths[2012][1]["totalExpenses"] = 23;
并且值 23 分配给每年的第 1 个月。我不明白错误在哪里。我第一次尝试谷歌脚本,我不知道我做错了什么,我只想用值更新哈希。但是对于每个年月对密钥,不要覆盖每个月。
请帮忙。
编辑 -- 将月份移动到循环形式年份
function generateYearMonths() {
var firstYear = 2012;
var todayDate = new Date(Date());
var lastYear = todayDate.getYear();
lastYear = 2013;
var yearsMonths = {}
for(var x=firstYear; x<=lastYear; x++) {
var months = {}
for(var x=1; x<=12; x++) {
months[x.toString()] = {
totalExpenses: 0,
totalIncomes: 0,
totalBalance: 0
}
}
yearsMonths[x] = months
}
return yearsMonths;
}
现在我不会给每个月分配相同的值,因为脚本会无限运行...
【问题讨论】:
-
那是因为你在
yearsMonths[x] = months行中的所有年份都分配给同一个对象months。它们都是同一个对象,因此一年内对months的任何更改都会反映在所有年份中
标签: javascript object key