Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

สลับเอลีเมนต์ที่ k จากหน้าและหลังในอาร์เรย์ - JavaScript

สลับค่าของเอลีเมนต์ตำแหน่งที่ k (1-based) จากหน้ากับตำแหน่งที่ k จากหลัง

ตัวอย่าง

arr = [0,1,2,3,4,5,6,7,8,9], k=4
index 3 (ค่า 3) ↔ index 6 (ค่า 6)
Result: [0,1,2,6,4,5,3,7,8,9]

ตัวอย่างโค้ด

const swapKth = (arr, k) => {
  const len = arr.length;
  const idx = k - 1;
  const idxFromEnd = len - k;
  
  [arr[idx], arr[idxFromEnd]] = [arr[idxFromEnd], arr[idx]];
};

const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
swapKth(arr, 4);
console.log(arr); // [0, 1, 2, 6, 4, 5, 3, 7, 8, 9]

swapKth(arr, 8);
console.log(arr); // [0, 1, 7, 6, 4, 5, 3, 2, 8, 9]

ผลลัพธ์

[ 0, 1, 2, 6, 4, 5, 3, 7, 8, 9 ]
[ 0, 1, 7, 6, 4, 5, 3, 2, 8, 9 ]

การตรวจสอบขอบเขต

const swapKthSafe = (arr, k) => {
  if (k < 1 || k > arr.length) return;
  if (k - 1 === arr.length - k) return; // ตำแหน่งเดียวกัน (กึ่งกลาง)
  [arr[k-1], arr[arr.length-k]] = [arr[arr.length-k], arr[k-1]];
};