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

การหาตำแหน่งกลางของอาร์เรย์โดยไม่ใช้ length และ loops - JavaScript

ฟังก์ชัน midElement() หาสมาชิกกลางของอาร์เรย์โดยใช้ recursion แทนการเข้าถึง length และ loops

กฎ

  • ความยาวคี่: คืนสมาชิกกลาง 1 ตัว
  • ความยาวคู่: คืนสมาชิกกลาง 2 ตัว

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

const arr = [14, 32, 36, 42, 45, 66, 87];
const array = [13, 92, 83, 74, 55, 46, 74, 82];

const midElement = (arr, ind = 0) => {
  if (arr[ind]) {
    return midElement(arr, ++ind); // recursion นับความยาว
  }
  // ind = length
  return ind % 2 !== 0
    ? [arr[(ind - 1) / 2]]
    : [arr[(ind / 2) - 1], arr[ind / 2]];
};

console.log(midElement(arr));   // [42]
console.log(midElement(array)); // [74, 55]

การทำงาน

  1. Recursion เพิ่ม ind จนกว่า arr[ind] จะเป็น falsy (undefined)
  2. ตอนนั้น ind = ความยาวอาร์เรย์
  3. คำนวณตำแหน่งกลางจากความยาว

ผลลัพธ์

[ 42 ]
[ 74, 55 ]

ข้อควรระวัง: Recursion depth จำกัด (~10,000-15,000) อาร์เร่ายาวกว่านี้จะ stack overflow