เราจำเป็นต้องเขียนฟังก์ชันที่ใช้อาร์เรย์หนึ่งมิติเป็นอาร์กิวเมนต์แรกและตัวเลข n เป็นอาร์กิวเมนต์ที่สอง และเราต้องทำ n อาร์เรย์ย่อยภายใน parentarray (**ถ้าเป็นไปได้) และแบ่งองค์ประกอบตามนั้น
** ถ้าอาร์เรย์มี 9 องค์ประกอบ และเราขอให้สร้าง 4 อาร์เรย์ย่อย จากนั้นหาร 2 องค์ประกอบในแต่ละอาร์เรย์ย่อยจะสร้าง 5 อาร์เรย์ย่อยและ 3 ในแต่ละสร้าง 3 ดังนั้นในกรณีดังกล่าว เราจึงต้องถอยกลับไปยังระดับต่ำสุดที่ใกล้ที่สุด (3 ในกรณีนี้) เพราะ ความต้องการของเราคือแจกจ่ายจำนวนองค์ประกอบเท่ากันในแต่ละอาร์เรย์ย่อย ยกเว้นอันสุดท้ายในบางกรณีพิเศษ
ตัวอย่างเช่น −
// if the input array is: const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']; // and the number is 2 //then the output should be: const output = [ [ 'A', 'B', 'C', 'D', 'E' ], [ 'F', 'G', 'H', 'I' ] ];
มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน −
ตัวอย่าง
const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']; const splitArray = (arr, rows) => { const itemsPerRow = Math.ceil(arr.length / rows); return arr.reduce((acc, val, ind) => { const currentRow = Math.floor(ind / itemsPerRow); if(!acc[currentRow]){ acc[currentRow] = [val]; }else{ acc[currentRow].push(val); }; return acc; }, []); }; console.log(splitArray(arr, 2));
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น -
[ [ 'A', 'B', 'C', 'D', 'E' ], [ 'F', 'G', 'H', 'I' ] ]