Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng các mảng có thứ tự n * n (ma trận vuông). Hàm sẽ xoay mảng 90 độ (theo chiều kim đồng hồ). Điều kiện là chúng ta phải thực hiện việc này tại chỗ (không phân bổ thêm mảng nào).
Ví dụ -
Nếu mảng đầu vào là -
const arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ];
Khi đó, mảng được xoay sẽ trông giống như -
const output = [ [7, 4, 1], [8, 5, 2], [9, 6, 3], ];
Ví dụ
Sau đây là mã -
const arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; const rotateArray = (arr = []) => { for (let rowIndex = 0; rowIndex < arr.length; rowIndex += 1) { for (let columnIndex = rowIndex + 1; columnIndex < arr.length; columnIndex += 1) { [ arr[columnIndex][rowIndex], arr[rowIndex][columnIndex], ] = [ arr[rowIndex][columnIndex], arr[columnIndex][rowIndex], ]; } } for (let rowIndex = 0; rowIndex < arr.length; rowIndex += 1) { for (let columnIndex = 0; columnIndex < arr.length / 2; columnIndex += 1) { [ arr[rowIndex][arr.length - columnIndex - 1], arr[rowIndex][columnIndex], ] = [ arr[rowIndex][columnIndex], arr[rowIndex][arr.length - columnIndex - 1], ]; } } }; rotateArray(arr); console.log(arr);
Đầu ra
Sau đây là kết quả trên bảng điều khiển -
[ [ 7, 4, 1 ], [ 8, 5, 2 ], [ 9, 6, 3 ] ]