【问题标题】:.Push with Multidimensional Arrays Exceeding a Two Column.Push 超过两列的多维数组
【发布时间】:2015-08-14 18:13:44
【问题描述】:

我可以使用一些帮助来弄清楚 .push 如何与 Multidimensional Arrays 一起使用。我正在编写一个简单的程序,该程序从Google Sheets 页面中的单元格收集信息,并自动生成需要更新的列列表并向团队发送电子邮件以获取可见性。我正在从VB.Net 转换回JavaScript,所以我一直想使用我在VB 中使用的方法。我已经阅读了这里的几篇文章,但似乎无法理解它。我可视化 2D 数组的方式就像一个电子表格,但在示例中我发现它与我的可视化不太一样。

[员工姓名] [状态] [开始日期]

我看到上面是empRec[0,0]empRec[0,1]empRec[0,2]

但在推送示例中我看到empRec.push({"Employee Name", "Status"});

我是否理解 , 将第二个值中的值分开?是否会添加另一个 , 并将值转移到第二个值中的位置 2?

感谢您的意见。

代码片段

// Extract the users who need review
for (r=2; r <= eName.length - 1; r++) {

if (eName[r] != "") {

  if (eAcceptNDA[r] == "" || eAvailability[r] == "" || eType[r] == "" || eDays[r] == "") {
    mailRecList[mailRecCount, 0] = eName[r];

    if (eAcceptNDA[r] == "") {
      mailRecList[mailRecCount, 1] = "Needed";
    } else { mailRecList[mailRecCount, 1] = "----"; }

    if (eAvailability[r] == "") {
      mailRecList.push[mailRecCount, 2] = "Needed";
    } else { mailRecList[mailRecCount, 2] = "----"; }

    if (eType[r] == "") {
      mailRecList[mailRecCount, 3] = "Needed";
    } else { mailRecList[mailRecCount, 3] = "----"; }

    if (eDays[r] == "") {
      mailRecList[mailRecCount, 4] = "Needed";
    } else { mailRecList[mailRecCount, 4] = "----"; }

    Logger.log(mailRecList[mailRecCount, 0] + ", " + mailRecList[mailRecCount, 1] + ", " + mailRecList[mailRecCount, 2] + ", " + mailRecList[mailRecCount, 3] + ", " + mailRecList[mailRecCount, 4]);
    Logger.log(mailRecList.length / 5);

  }
  mailRecCount += 1;
}
  }

当我运行上面的代码时,它只返回一行。工作表中当前有 3 个值,它只返回最后一个值。 for loop 以 2 开头的原因是因为前 2 个值是工作表上的标题信息。

【问题讨论】:

  • 在这一行中:mailRecList.push[mailRecCount, 2] = "Needed"; 您正在使用带有push 的括号。你不能那样做。您必须使用括号。而且我不知道您为什么要使用赋值运算符。似乎您正试图以与向对象添加 key/value 元素对相同的方式向数组添加元素。数组和对象不使用相同的语法。 Link - JavaScript - Push
  • 谢谢。让我看一看。我认为这是我没有替换的先前失败尝试的残余。我使用了赋值运算符,因为在以前的语言中就是这样完成的。语言跳跃让我的大脑感到困惑。那么,如果我想推到第三列,我会使用mailRecList(eName[r],"Needed","Needed"); ???

标签: javascript arrays google-apps-script


【解决方案1】:

您需要构建内部数组,然后将其推送到您的二维数组中。正如您的代码更新后的 sn-p 所示:

function fillMailRecList() {

  var eName =      ['Ignore1', 'Ignore2', 'Fred', 'Bill',   'Sam']
  var eAcceptNDA = ['',        '',        '',     'Ignore', '']
  
  var mailRecList = []
  var mailRecListItem = []
  var mailRecCount = 0

  // Extract the users who need review
  for (var r = 2; r < eName.length; r++) {
  
    if (eName[r] !== "") {
    
      if (eAcceptNDA[r] === "") {
      
//        mailRecList[mailRecCount, 0] = eName[r]
        
        mailRecListItem.push(eName[r])
        
        if (eAcceptNDA[r] == "") {
          
//          mailRecList[mailRecCount, 1] = "Needed"

        mailRecListItem.push("Needed")
          
        } else { 
          
//          mailRecList[mailRecCount, 1] = "----"; 

          mailRecListItem.push("----")
        }
        
        // mailRecListItem is a reference to the array that will be used
        // again next time around, so you need to take a new copy of it
        // to keep. This also has the effect of clearing the working array
        // ready for the next loop
        mailRecList.push(mailRecListItem.splice(0, mailRecListItem.length))        
      }      
    }    
  }
  
  Logger.log(mailRecList) // [[Fred, Needed], [Sam, Needed]]
}

你可以看到这个正在运行here。

【讨论】:

    猜你喜欢
    • 2013-06-09
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2023-03-30
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    相关资源
    最近更新 更多