Arrays Google应用程序脚本:增加数组中的每个值

Arrays Google应用程序脚本:增加数组中的每个值,arrays,google-apps-script,Arrays,Google Apps Script,我有一个数组,它是一个表中的一行数字。我想增加行中的每个数字,但是我的尝试只是将值1添加到数组的末尾。一旦我对这个进行了排序,我就需要将数组添加回工作表中,但我还没有做到这一点。我试过这个: function turnIncrement() { var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var lastColumn = ss.getLastColumn() var turnValuesRow6 = ss.ge

我有一个数组,它是一个表中的一行数字。我想增加行中的每个数字,但是我的尝试只是将值1添加到数组的末尾。一旦我对这个进行了排序,我就需要将数组添加回工作表中,但我还没有做到这一点。我试过这个:

function turnIncrement() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastColumn = ss.getLastColumn()
var turnValuesRow6 = ss.getRange(6, 4, 1, lastColumn); 
var turnValues = turnValuesRow6.getValues(); 

for (var i=0; i < turnValues.length; i++) {
 turnValues[i] += 1;}
}

这两个值只需在数组末尾添加1。我想我可以尝试分别获取每个值,但这似乎效率很低。

需要了解的主要问题是
turnValues
是一个二维数组,因为这是
getValues
的返回类型。对于2乘2的范围,它看起来像
[[1,2],[3,4]]
。对于1×2范围(1行,2列),它是
[[1,2]]
。对于一个1乘1的范围(单个单元格),它就像
[[1]]

在您的特定情况下,对于一行范围,修复将是

for (var i=0; i < turnValues[0].length; i++) {
 turnValues[0][i] += 1;
}
for(变量i=0;i
一般来说,您需要一个双循环

for (var i=0; i < turnValues.length; i++) 
  for (var j=0; j < turnValues[0].length; j++) {
    turnValues[i][j] += 1;
  }
}
for(变量i=0;i
需要了解的主要内容是
turnValues
是一个二维数组,因为这是
getValues
的返回类型。对于2乘2的范围,它看起来像
[[1,2],[3,4]]
。对于1×2范围(1行,2列),它是
[[1,2]]
。对于一个1乘1的范围(单个单元格),它就像
[[1]]

在您的特定情况下,对于一行范围,修复将是

for (var i=0; i < turnValues[0].length; i++) {
 turnValues[0][i] += 1;
}
for(变量i=0;i
一般来说,您需要一个双循环

for (var i=0; i < turnValues.length; i++) 
  for (var j=0; j < turnValues[0].length; j++) {
    turnValues[i][j] += 1;
  }
}
for(变量i=0;i
您可以使用array.map()迭代数组

下面是一个简单的例子。map()将在数组中的每个值上循环,提供的函数将返回对该值所做的操作

[2,3,4]=[1,2,3].map(函数(值){returnvalue+=1})

你的例子

function turnIncrement() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastColumn = ss.getLastColumn();
  var turnValuesRow6 = ss.getRange(6, 4, 1, lastColumn); 
  var turnValues = turnValuesRow6.getValues(); 
  turnValues =  turnValues[0].map(function(col){ return col+=1});
  turnValuesRow6.setValues([turnValues])
}

提示:记住getValues返回数组[]。因此,即使您只请求一行,它仍然返回一个多维数组,并且setValues()正在查找数组[]

您可以使用array.map()迭代数组

下面是一个简单的例子。map()将在数组中的每个值上循环,提供的函数将返回对该值所做的操作

[2,3,4]=[1,2,3].map(函数(值){returnvalue+=1})

你的例子

function turnIncrement() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastColumn = ss.getLastColumn();
  var turnValuesRow6 = ss.getRange(6, 4, 1, lastColumn); 
  var turnValues = turnValuesRow6.getValues(); 
  turnValues =  turnValues[0].map(function(col){ return col+=1});
  turnValuesRow6.setValues([turnValues])
}

提示:记住getValues返回数组[]。因此,即使您只请求一行,它仍然返回一个多维数组,并且setValues()正在查找数组[]

谢谢你的回复。我将采用下面的Array.map答案。但是这个答案帮助我理解了2d阵列,我只是遇到了一个不同的问题,但是你说的2d阵列为我解决了这个问题。不错!谢谢你的回复。我将采用下面的Array.map答案。但是这个答案帮助我理解了2d阵列,我只是遇到了一个不同的问题,但是你说的2d阵列为我解决了这个问题。不错!