JavaScript / Google 脚本 - 将 "Row" 数组转置为 "Column" 数组
JavaScript / Google Script - Transpose "Row" Array into "Column" Array
下午好,
我正在尝试将“行”数组(或一维数组)转置为“列”数组(或其中包含单个数组的数组),以允许我将值设置为单个列(向下多行)而不是如果它是跨多列的一行
我尝试使用推送循环和映射函数,但均未成功:
function myFunction2() {
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Source1");
var lastColumn = ss.getLastColumn()
var endRange = lastColumn-3
//Retrieve values into array named "items"
var items = ss.getRange(16,4,1,endRange).getValues()
转置尝试 # 1:
var colArray = [];
for (var i=0; i<items.length; i++)
{
colArray.push([items[i]]);
}
}
尝试 # 1 的输出:
[[[item1, item2, item3, item4, item5]]]
转置尝试 # 2:
var colArray = items.map(function (el){
return [el];
});
尝试 # 2 的输出:
[[[item1, item2, item3, item4, item5]]]
我想要的预期输出是:
[[item1], [item2], [item3], [item4], [item5]]
是否有办法实现预期的输出?
在您的 var items = ss.getRange(16,4,1,endRange).getValues()
脚本中,items
是类似于 [[value1, value2, value3,,,]]
的二维数组。所以,当你的脚本修改后,就变成了下面这样。
发件人:
var colArray = [];
for (var i=0; i<items.length; i++)
{
colArray.push([items[i]]);
}
}
收件人:
var colArray = [];
for (var i = 0; i < items[0].length; i++) {
colArray.push([items[0][i]]);
}
而且,
发件人:
var colArray = items.map(function (el){
return [el];
});
收件人:
var colArray = items[0].map(function (el){
return [el];
});
注:
或者,当你想转置包含多个行和列的值时,你也可以使用下面的脚本。
const colArray = items[0].map((_, i) => items.map(row => row[i]));
参考文献:
下午好,
我正在尝试将“行”数组(或一维数组)转置为“列”数组(或其中包含单个数组的数组),以允许我将值设置为单个列(向下多行)而不是如果它是跨多列的一行
我尝试使用推送循环和映射函数,但均未成功:
function myFunction2() {
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Source1");
var lastColumn = ss.getLastColumn()
var endRange = lastColumn-3
//Retrieve values into array named "items"
var items = ss.getRange(16,4,1,endRange).getValues()
转置尝试 # 1:
var colArray = [];
for (var i=0; i<items.length; i++)
{
colArray.push([items[i]]);
}
}
尝试 # 1 的输出:
[[[item1, item2, item3, item4, item5]]]
转置尝试 # 2:
var colArray = items.map(function (el){
return [el];
});
尝试 # 2 的输出:
[[[item1, item2, item3, item4, item5]]]
我想要的预期输出是:
[[item1], [item2], [item3], [item4], [item5]]
是否有办法实现预期的输出?
在您的 var items = ss.getRange(16,4,1,endRange).getValues()
脚本中,items
是类似于 [[value1, value2, value3,,,]]
的二维数组。所以,当你的脚本修改后,就变成了下面这样。
发件人:
var colArray = [];
for (var i=0; i<items.length; i++)
{
colArray.push([items[i]]);
}
}
收件人:
var colArray = [];
for (var i = 0; i < items[0].length; i++) {
colArray.push([items[0][i]]);
}
而且,
发件人:
var colArray = items.map(function (el){
return [el];
});
收件人:
var colArray = items[0].map(function (el){
return [el];
});
注:
或者,当你想转置包含多个行和列的值时,你也可以使用下面的脚本。
const colArray = items[0].map((_, i) => items.map(row => row[i]));