我如何在二维数组中返回多个列



我正在处理这段代码:

for (i; i < students.length; i++) {
  ss.getRange(i+1, col).setValue(students[i][0]);
  ss.getRange(i+1, col+1).setValue(students[i][3]);
  ss.getRange(i+1, col+2).setValue(students[i][4]);
}

变量声明,代码工作,我只是想找出我如何从[i]行返回[0,3,4]列的数据,并将值全部设置在一行中。我觉得我错过了一些明显的东西。

请帮。

在JavaScript中没有内置的方法;JavaScript中的"多维数组"并不是真正的多维数组,而只是数组的数组。您可以编写一个函数来执行此操作:

function col(arr, n) {
    return arr.reduce((a, x, i) => (a[i] = x[n], a), []);
}
// example usage:
const arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
col(arr, 0);   // returns [1, 4, 7]
col(arr, 1);   // returns [2, 5, 8];
col(arr, 2);   // returns [3, 6, 9];

(注意:这使用ES2015语法,依赖于arr实际上是一个数组的数组,并使用基于0的列编号。)

您确实可以通过获得具有多个单元格的范围并使用带有数组参数的setValues(复数)来优化这一点:

for (i; i < students.length; i++) {
    ss.getRange(i+1, col, 1, 3).setValues([
        [students[i][0], students[i][3], students[i][4]]
    ]);
}

如果你想更进一步,你可以这样做:

ss.getRange(i+1, col, students.length - i, 3).setValues( 
    students.slice(i).map(function(a) {
        return [a[0], a[3], a[4]];
    })
);
注意:我不知道你的代码中 I 的初始值是什么,但如果它是0,那么你不需要slice:
ss.getRange(1, col, students.length, 3).setValues( 
    students.map(function(a) {
        return [a[0], a[3], a[4]];
    })
);

相关内容

  • 没有找到相关文章

最新更新