เราจำเป็นต้องเขียนฟังก์ชัน chunk() ที่รับอาร์เรย์ arr ของ string / number literals เป็นอาร์กิวเมนต์แรกและตัวเลข n เป็นอาร์กิวเมนต์ที่สอง
เราจำเป็นต้องส่งคืนอาร์เรย์ของ n subarrays ซึ่งแต่ละอาร์เรย์มี arr.length / nelements มากที่สุด และการกระจายตัวขององค์ประกอบควรเป็นแบบนี้ −
องค์ประกอบแรกจะไปในอาร์เรย์ย่อยที่หนึ่ง ที่สองในสอง สามในสาม และอื่นๆ เมื่อเรามีองค์ประกอบเดียวในแต่ละอาร์เรย์ย่อย เราจะเริ่มด้วยการเติมอาร์เรย์ย่อยแรกด้วยองค์ประกอบที่สอง ในทำนองเดียวกัน เมื่ออาร์เรย์ย่อยทั้งหมดมีสององค์ประกอบหลังจากนั้น เราจะเติมองค์ประกอบที่สามในอาร์เรย์แรกและต่อไปเรื่อยๆ
ตัวอย่างเช่น −
// if the input array is: const input = [1, 2, 3, 4, 5, 6]; //then the output should be: const output = [ [1, 4], [2, 5], [3, 6] ];
มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน เราจะใช้วิธี Array.prototype.reduce() แทนอาร์เรย์ต้นฉบับเพื่อสร้างอาร์เรย์ที่ต้องการ รหัสสำหรับสิ่งนี้จะเป็น −
ตัวอย่าง
const input = [1, 2, 3, 4, 5, 6, 7, 8, 9]; const chunk = (arr, size) => { return arr.reduce((acc, val, ind) => { const subIndex = ind % size; if(!Array.isArray(acc[subIndex])){ acc[subIndex] = [val]; } else { acc[subIndex].push(val); }; return acc; }, []); }; console.log(chunk(input, 4));
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น -
[ [ 1, 5, 9 ], [ 2, 6 ], [ 3, 7 ], [ 4, 8 ] ]