如何在JavaScript中翻译二维数组,以便行成为列?

时间:2018-02-02 23:53:50

标签: javascript arrays multidimensional-array

我有一些大型数据对象以记录格式返回给我,作为一个数组数组。列标题位于索引0处的数组中,行标题位于每个数组的索引0中。有时,需要翻译(转动)所有记录,以便行成为列,列成为行。

例如:

const what_i_have = [
    [1,1,1,1],
    [2,2,2,2],
    [3,3,3,3],
    [4,4,4,4]
]

const what_i_need = [
    [1,2,3,4],
    [1,2,3,4],
    [1,2,3,4],
    [1,2,3,4]
]

1 个答案:

答案 0 :(得分:1)

如果您知道每个子数组具有相同的长度,最简单的方法是创建一个具有输入数组子节点长度的空数组。然后你可以只映射它并使用地图中的索引用原始数组中的值填充它。

function pivot (table) {
  return Array(table[0].length).fill() // Create array with desired length
    .map((row, i) => // Map over the new rows
      table.map(col => col[i]) // Fill them by mapping over old rows
    )
}