我在这里处理这段代码:
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]);
}
声明变量,代码有效,我只是想知道如何从行[0,3,4]
中的[i]
列返回数据,并将值全部设置在一行中。我觉得我错过了一些明显的东西。
请帮忙。
答案 0 :(得分:1)
在JavaScript中没有内置的方法可以做到这一点; &#34;多维数组&#34;在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的列编号。)
答案 1 :(得分: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]];
})
);