【问题标题】:Can I use an expression as an array index in javascript?我可以在javascript中使用表达式作为数组索引吗?
【发布时间】:2015-12-01 18:57:13
【问题描述】:

好的,我正在尝试将一个大数组的一部分复制到一个对象数组中。大数组是代表 RMA 数据的谷歌表中的一行。小数组包含几个(电路)板对象。我正在将大数组中的 4 个项目读入每个“板”。要从大数组中读取正确的项目,我需要先增加运算符,然后再读入我的小数组中对象中的新命名属性。如果我将数组用于“板”,那将很容易:创建一个子循环并在每次迭代时增加索引。但是因为我正在使用一个对象,所以我不知道该怎么做。我试图在我的索引中使用一个表达式(参见代码)。此外,顺便说一句,所有这些都发生在一个更大的对象内,该对象旨在从谷歌表中读取多行并处理它们。代码如下:

board:
           [
           {
           code: "Board Code",
           software: "S-Ver",
           problem: "Problem",
           riu: "RiU",
           msqNotes: "MSq Notes"
           }
           ],
grab: function (rowArray, board)
          {
          rma.timestamp = rowArray[1];
          rma.guidelinesAgree = rowArray[2];
          rma.expediteyn = rowArray[3];
          rma.contact.name = rowArray[4];
          rma.contact.coName = rowArray[5];
          rma.contact.emailAddr = rowArray[6];
          rma.contact.telNum = rowArray[7];
          rma.contact.shipAddr = rowArray[8];
          var boardArray = rma.createBoardArray();
          var boardStartIndex = 9;
          for(i = 0; i< 5; i++)
            {
            var k = i + 1;
            board.push()
            board[k].code = rowArray[boardStartIndex + 4i]; //prob here
            board[k].software = rowArray[boardStartIndex + 4i + 1];
            board[k].problem = rowArray[boardStartIndex + 4i + 2];
            board[k].riu = rowArray[boardStartIndex + 4i + 3];
            board[k].msqNotes = "";
            }

注意:在 Google 脚本编辑器中,当我尝试调试时,我收到错误:“索引表达式中缺少 ]。”在我上面标记为“//prob here”的那一行。

另一个注意事项:我使用表达式“k”作为索引,因为我特意使用包含标题值的 board[0] 初始化了“board”数组......我想创建一个 google doc afterword有一个表,第一行是每一列的标题/标签,我正在使用第一个对象来存储这些标题。以前我使用的是“board[i+1].code =”等。

有没有办法在 JS 中为数组索引使用 Kosher 的表达式?

【问题讨论】:

  • 4i 是什么意思?它不是一个有效的标识符。
  • "i" 是循环 [increment] 变量 - 参见 'for' 语句。
  • 您的意思可能是4*i。您可以使用任意表达式作为数组索引,只要该表达式产生一个数字即可。 board.push() 也没有做任何事情。也许你的意思是board.push({})

标签: javascript arrays indexing google-apps-script expression


【解决方案1】:

这是一个语法错误:

rowArray[boardStartIndex + 4i]

我猜你是这个意思:

rowArray[boardStartIndex + 4 * i]

我知道在数学和科学中“4i”的意思是“4 倍 i”,但在 Javascript 中您必须使用“*”运算符。

【讨论】:

  • facepalm...非常感谢!
猜你喜欢
  • 1970-01-01
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
  • 2022-11-07
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
相关资源
最近更新 更多