เราจำเป็นต้องเขียนฟังก์ชันแบบเรียกซ้ำ เช่น pushRecursively() ซึ่งรับอาร์เรย์ของตัวเลขและส่งคืนอ็อบเจ็กต์ที่มีคุณสมบัติคี่และคู่ โดยที่คี่คืออาร์เรย์ของตัวเลขคี่จากอาร์เรย์อินพุตและแม้แต่อาร์เรย์ของตัวเลขคู่จากอาร์เรย์อินพุต สิ่งนี้จะต้องแก้ไขโดยใช้การเรียกซ้ำและไม่ควรใช้วิธีการวนซ้ำแบบใด
ตัวอย่าง
const arr = [12,4365,76,43,76,98,5,31,4]; const pushRecursively = (arr, len = 0, odd = [], even = []) => { if(len < arr.length){ arr[len] % 2 === 0 ? even.push(arr[len]) : odd.push(arr[len]); return pushRecursively(arr, ++len, odd, even); }; return { odd, even } }; console.log(pushRecursively(arr));
ในขณะที่ตัวแปร len ถึงจุดสิ้นสุดของอาร์เรย์ เรายังคงเรียกใช้ฟังก์ชันซ้ำ ๆ กัน ทุกครั้งที่ผลักค่าคี่ไปยังอาร์เรย์คี่ และค่าคู่ถึงอาร์เรย์คู่ และเมื่อตัวแปร len เท่ากับความยาวของอาร์เรย์ เราจะออกจากฟังก์ชันโดยส่งคืนอ็อบเจ็กต์ .
ผลลัพธ์
ผลลัพธ์ของรหัสนี้ในคอนโซลจะเป็น −
{ odd: [ 4365, 43, 5, 31 ], even: [ 12, 76, 76, 98, 4 ] }