代码之家  ›  专栏  ›  技术社区  ›  AlbertMunichMar

谷歌脚本:我不能给一个对象的键赋值

  •  0
  • AlbertMunichMar  · 技术社区  · 6 年前

    我在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;
    }
    

    现在我不给每个月分配相同的值,因为脚本运行的时间是无限的…

    1 回复  |  直到 6 年前
        1
  •  1
  •   CertainPerformance    6 年前

    var months = {}

    for(var x=firstYear; x<=lastYear; x++) {
      yearsMonths[x] = months
    }
    

    yearMonths[x] months yearMonths

    for(var x=firstYear; x<=lastYear; x++) {
      yearsMonths[x] = JSON.parse(JSON.stringify(months));
    }