我正在尝试创建一个接收任何数组并将其转置的函数,以便行转换为列,列转换为行。
不确定我做错了什么或丢失但是一旦数组通过就继续收到此消息....
TypeError:无法将undefined的属性“0.0”设置为“xxxxxx”。
错误在线
result [row] [col] = array [col] [row]; //旋转
任何指针都会非常感激。
function transposeArray(array){
var result = [];
for(var row = 0; row < array.length; row++){ // Loop over rows
for(var col = 0; col < array[row].length; col++){ // Loop over columns
result[row][col] = array[col][row]; // Rotate
}
}
return result;
}
答案 0 :(得分:12)
我个人最喜欢的是this gist:
function transpose(a)
{
return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}
答案 1 :(得分:3)
您需要首先为外部结果数组中的每个元素分配一个数组对象。可能有更有效的方法,但我会想:
function transposeArray(array){
var result = [];
for (var col = 0; col < array[0].length; col++) { // Loop over array cols
result[col] = [];
for (var row = 0; row < array.length; row++) { // Loop over array rows
result[col][row] = array[row][col]; // Rotate
}
}
return result;
}
答案 2 :(得分:1)
我找到了这样的方式:
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("SEGUNDOA2E");
var notas = sheet.getRange("G6:AK6").getNotes();
for (var i = 0; i < 31; i++){
var nota = notas[0][i];
var conceptos = sheet.getRange(37+i,7).setValue(nota);
}
}
希望这有帮助。
答案 3 :(得分:0)
我用请求函数公式解决了:
var RanMar = HojaResp.getRange("H1:X1"); // Se establece rango para las marcas de cemento.
var Rango2 = HojaInfo.setActiveCell("B3"); // Temporal
Rango2.setFormula('=transpose(Respuestas!H1:X1)');
非正统,但对我有用。
问候,
Harold Bautista