在javascript中转置可变大小数组?

在javascript中转置可变大小数组?,javascript,arrays,Javascript,Arrays,我正在尝试将2D数组导出为.csv文件。我的数组的形式是:[[1,2],[3],[4,5,6]]。我想将电子表格格式化为 h1 h2 h3 h4 1 3 4 2 5 6 我无法更改接收数据的格式。我已经研究了转置数组的方法,但是我看到的解决方案不适用于像我这样的可变大小数组。到目前为止,我唯一的想法(在psuedoish代码中)是: for(icol1.length)arr.push(“”); else arr.push

我正在尝试将2D数组导出为.csv文件。我的数组的形式是:
[[1,2],[3],[4,5,6]]
。我想将电子表格格式化为

    h1 h2 h3 h4
    1     3  4
    2        5
             6
我无法更改接收数据的格式。我已经研究了转置数组的方法,但是我看到的解决方案不适用于像我这样的可变大小数组。到目前为止,我唯一的想法(在psuedoish代码中)是:

for(i<最长列的长度;i++){
var-arr=[];
如果(i>col1.length)arr.push(“”);
else arr.push(col1[i]);
//剩下的马也是如此
csvFile+=arr;
}

有更好的方法吗?

您可以使用外部数组的长度作为每行的长度的数组来转换数组

var数组=[[1,2],[3],[4,5,6],[7],
result=array.reduce((r,a,i,{length})=>{
a、 forEach((v,j)=>{
r[j]=r[j]| |新数组(长度)。填充(“”);
r[j][i]=v;
});
返回r;
}, []);

控制台日志(结果)您就快到了,只是缺少内部循环(因为CSV表有行X列):

var输入=[[1,2],[3],[4,5,6];
var lengthOfLongestColumn=Math.max(…input.map(a=>a.length));
var csvFile=[['h1'、'h2'、'h3'、'h4'];
对于(变量i=0;i=列长度){
行。推(“”);
}
否则{
行推(列[i]);
}
}
csvFile.push(行);
}
console.log(csvFile)
    for (i < length of longest column; i++) {
         var arr = [];
         if (i > col1.length) arr.push("");
         else arr.push(col1[i]);
         //so on for rest of cols
         csvFile += arr;
    }