0

我真的找不到这个问题的好标题......对此感到抱歉:-)

它应该是这样的: 一个真正困扰我的简单问题

在这个(非常)基本的代码中,我想保持变量headers不变并且它没有......为什么以及如何获得一种简单的方法来保持该值不变,当我修改otherVersion

该工作表是一排简单的单元格,其中包含连续单元格中的 a、b、c、d、e、f、g、h、i、j。

function myFunction() {
  var sh = SpreadsheetApp.getActive();
  var data = sh.getDataRange().getValues();
  var headers = data[0];
  Logger.log(headers);
  var otherVersion = data[0];
  var x = otherVersion.shift();
  Logger.log(x)
  Logger.log(headers);// why has it changed ?
}

记录器结果:

 [a, b, c, d, e, f, g, h, i, j]
  a
 [b, c, d, e, f, g, h, i, j]

我需要此标头的“正常”和“转换版本”,这就是为什么我使用 2 个不同的 var 名称。为什么会有这种奇怪的互动?这背后的逻辑是什么?

4

1 回答 1

1

在您的代码中,data[0]是一个数组。这样var otherVersion = data[0];做不会创建副本,而是在同一个副本上工作。请改用 slice() 函数。

var otherVersion = data[0].slice(0);
于 2013-05-17T15:39:09.177 回答