📜  在 javascript 中转置数组(1)

📅  最后修改于: 2023-12-03 15:07:41.224000             🧑  作者: Mango

在 JavaScript 中转置数组

在 JavaScript 中,我们可以使用多种方法来转置数组。在本篇文章中,我们将介绍三种实现方式,分别是使用循环、使用 map() 方法和使用 reduce() 方法来实现。

1. 使用循环

使用循环方法可以比较直接地实现数组的转置。我们可以首先创建一个新的二维数组,将原数组的列与行颠倒,并将结果存储在新数组中。

function transposeArray(arr) {
  let newArr = [];
  for (let i = 0; i < arr[0].length; i++) {
    newArr[i] = [];
    for (let j = 0; j < arr.length; j++) {
      newArr[i][j] = arr[j][i];
    }
  }
  return newArr;
}

以上代码使用了两个 for 循环来遍历原数组 arr,使用 newArr 数组来保存转置后的结果,并将其返回。使用方式如下:

let arr = [[1, 2], [3, 4], [5, 6]];
let transposedArr = transposeArray(arr);
console.log(transposedArr); // [[1, 3, 5], [2, 4, 6]]
2. 使用 map() 方法

我们也可以使用 JavaScript 中的 map() 方法来实现数组的转置。将原数组的列和行交换后,我们可以使用 map() 方法将原数组转置。

function transposeArray(arr) {
  return arr[0].map((_, colIndex) => arr.map(row => row[colIndex]));
}

以上代码将原数组 arr 的列和行交换,使用 map() 方法来将其转置,并将转置后的结果返回。使用方式如下:

let arr = [[1, 2], [3, 4], [5, 6]];
let transposedArr = transposeArray(arr);
console.log(transposedArr); // [[1, 3, 5], [2, 4, 6]]
3. 使用 reduce() 方法

我们还可以使用 JavaScript 中的 reduce() 方法来实现数组的转置。与上面的方法相同,我们也是将原数组的列和行交换,但这里我们使用 reduce() 方法来完成这项工作。

function transposeArray(arr) {
  return arr.reduce((prevRow, currRow) => currRow.map((_, i) => [...(prevRow[i] || []), currRow[i]]), []);
}

以上代码使用 reduce() 方法来将原数组转置,并返回转置后的结果。使用方式如下:

let arr = [[1, 2], [3, 4], [5, 6]];
let transposedArr = transposeArray(arr);
console.log(transposedArr); // [[1, 3, 5], [2, 4, 6]]
结论

到此为止,我们已经学习了三种方法来实现 JavaScript 数组的转置。使用循环方法比较直接,使用 map() 和 reduce() 方法则更加简洁。在实际使用中,可以根据情况选用不同的方法。