📅  最后修改于: 2023-12-03 15:07:41.224000             🧑  作者: Mango
在 JavaScript 中,我们可以使用多种方法来转置数组。在本篇文章中,我们将介绍三种实现方式,分别是使用循环、使用 map() 方法和使用 reduce() 方法来实现。
使用循环方法可以比较直接地实现数组的转置。我们可以首先创建一个新的二维数组,将原数组的列与行颠倒,并将结果存储在新数组中。
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]]
我们也可以使用 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]]
我们还可以使用 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() 方法则更加简洁。在实际使用中,可以根据情况选用不同的方法。