我已经看过其他一些与此类似的问题,但是我以一种独特的方式获得了阵列,我无法弄清楚如何将其更改为2D阵列。



  //Special function for adding arrays, just use sumArray on first array with second array in parenthesis
  //==========================================
  Array.prototype.sumArray = function (arr) {

    var sum = this.map(function (num, idx) {
      return num + arr[idx];
    });

    return sum;
  }
  var array1 = [1,2,3,4];
  var array2 = [5,6,7,8];
  var sum = array1.sumArray(array2);
  Logger.log("sum: " + sum);
  //==========================================

  var calc = ss.getRangeByName( "calc" );
  var target = ss.getRangeByName( "target" );
  var current = ss.getRangeByName( "current" );
  var left = ss.getRangeByName( "left" );

  var gainedEVs = calc.getValues();
  var goalEVs = target.getValues();
  var oldEVs = current.getValues();
  var leftEVs = left.getValues();

  //Make everything ints
  //==========================================
  for(var i = 0; i < oldEVs.length; i++) {
    Logger.log(oldEVs.length);
    oldEVs[i] = parseInt(oldEVs[i]);
  }
  for(var i = 0; i < gainedEVs.length; i++) {

    gainedEVs[i] = parseInt(gainedEVs[i]);
  }
  for(var i = 0; i < goalEVs.length; i++) {

    goalEVs[i] = parseInt(goalEVs[i]);
  }
  for(var i = 0; i < leftEVs.length; i++) {

    leftEVs[i] = parseInt(leftEVs[i]);
  }
  //==========================================

  var newEVs = [[oldEVs.sumArray(gainedEVs)]];
  var newLeft = [[goalEVs.subArray(newEVs)]];

  //Now I try to set values and I get the error
  current.setValues(newEVs);





我试图将setValues更改为setValues([newEVs]);但这也不起作用。关于如何使新电动汽车达到正确高度的任何线索吗?它具有正确数量的值,但是这些值存储在列中,而不是行中。 (在这种情况下,我所有的范围都是6行1行)

最佳答案

由于范围很小,因此您不必太担心性能,因此可以使用循环将它们从行转换为列:

var column = [];
for (var i=0; i<newEVs.length; i++){
  column.push([newEVs[i]]);
}
current.setValues(column);

08-19 01:47