เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของค่าคงที่เป็นอาร์กิวเมนต์เดียว ฟังก์ชันต้องสลับดัชนีคู่ที่ติดกันกับกัน และสลับดัชนีคี่ที่ติดกันกับกัน โดยทำการสลับในที่เดิม (in-place)
ตัวอย่าง
ถ้าอาร์เรย์นำเข้าคือ:
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8];
อาร์เรย์ควรกลายเป็น:
const output = [2, 3, 0, 1, 6, 7, 4, 5, 8];
เพราะ 0 กับ 2 สลับกัน 1 กับ 3 สลับกัน 4 กับ 6 สลับกัน 5 กับ 7 สลับกัน และ 8 คงเดิม
ตัวอย่างโค้ด
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8];
const swapPairs = (arr = []) => {
const swap = (array, ind1, ind2) => {
const temp = array[ind1];
array[ind1] = array[ind2];
array[ind2] = 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);
ผลลัพธ์
[2, 3, 0, 1, 6, 7, 4, 5, 8]