Viết hàm JavaScript nhận vào mảng literals, hoán đổi từng cặp chỉ số chẵn liên tiếp với nhau, và từng cặp chỉ số lẻ liên tiếp với nhau. Thao tác thực hiện trực tiếp trên mảng gốc (in-place).
Ví dụ: [0,1,2,3,4,5,6,7,8] thành [2,3,0,1,6,7,4,5,8] (0↔2, 1↔3, 4↔6, 5↔7, 8 giữ nguyên).
Ví dụ
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8];
const swapPairs = (arr = []) => {
const swap = (array, i1, i2) => {
const temp = array[i1];
array[i1] = array[i2];
array[i2] = temp;
};
let i = 0;
for (; i + 3 < arr.length; i += 4) {
swap(arr, i, i + 2);
swap(arr, i + 1, i + 3);
}
if (i + 2 < arr.length) swap(arr, i, i + 2);
};
swapPairs(arr);
console.log(arr);
Kết quả
[2, 3, 0, 1, 6, 7, 4, 5, 8]