เราต้องเขียนฟังก์ชันอาร์เรย์ ชื่อว่า findMiddle ที่คืนค่าองค์ประกอบกลางของอาร์เรย์ โดยไม่เข้าถึง property length และไม่ใช้ลูปในตัว (built-in loops) ถ้าอาร์เรย์มีจำนวนองค์ประกอบเป็นคี่ เราคืนค่าองค์ประกอบกลางเพียงตัวเดียว ถ้ามีจำนวนคู่ เราคืนค่าอาร์เรย์ขององค์ประกอบกลางสองตัว
มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน 正如คุณคาดเดาไว้ เราจะใช้ recursion เพื่อหาองค์ประกอบเหล่านี้ โค้ดสำหรับฟังก์ชันเรียกซ้ำจะเป็นดังนี้:
ตัวอย่างโค้ด
const arr = [1, 2, 3, 4, 5, 6, 7];
const array = [1, 2, 3, 4, 5, 6, 7, 8];
const findMiddle = (arr, ind = 0) => {
if (arr[ind]) {
return findMiddle(arr, ++ind);
}
return ind % 2 !== 0 ? [arr[(ind - 1) / 2]] : [arr[(ind / 2) - 1], arr[ind / 2]];
};
console.log(findMiddle(arr));
console.log(findMiddle(array));
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็นดังนี้:
[ 4 ] [ 4, 5 ]