使用数组在GAS中发生变量问题

时间:2013-05-17 15:04:25

标签: google-apps-script

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

它应该是这样的: 关于真正困扰我的事情的简单问题

在这个(非常)基本代码中我想保持变量headers完好无损...它为什么以及如何在修改{时获得一种简单的方法来保持该值不变{1}}?

工作表是一个简单的单元格行,在连续的单元格中包含a,b,c,d,e,f,g,h,i,j。

otherVersion

记录器结果:

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 ?
}

我需要这个标题的'正常'和'移位版本',这就是为什么我使用2个不同的var名称。为什么这种奇怪的互动?这背后的逻辑是什么?

1 个答案:

答案 0 :(得分:1)

在您的代码中,data[0]是一个数组。执行var otherVersion = data[0];不会创建副本,而是在同一副本上运行。改为使用slice()函数。

var otherVersion = data[0].slice(0);