2016-10-01 118 views
0

我工作的这个代码在这里返回多个列:如何在一个二维数组

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]列开始,并将所有值全部设置在一行中。我觉得我失去了一些明显的东西。

请帮忙。

回答

1

在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的列编号)

0

你确实可以

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

如果要采取了一步,就可以做到这一点:通过获得与多个小区的范围内,并使用setValues(复数)以与阵列参数优化该位

ss.getRange(i+1, col, students.length - i, 3).setValues( 
    students.slice(i).map(function(a) { 
     return [a[0], a[3], a[4]]; 
    }) 
); 

注:我不知道初始值是在你的代码是什么,但如果是0,那么你不需要slice

ss.getRange(1, col, students.length, 3).setValues( 
    students.map(function(a) { 
     return [a[0], a[3], a[4]]; 
    }) 
); 
相关问题