เราต้องเขียนฟังก์ชันที่รับอาร์เรย์และจำนวน chunk (num) แล้วแบ่งอาร์เรย์เป็น num ชิ้นย่อย โดยชิ้นสุดท้ายอาจมีขนาดต่างกันถ้าไม่หารลงตัว
ตัวอย่าง: [1,2,3,4,5,6,7,8] และ num=3 → [[1,2,3],[4,5,6],[7,8]]
ตัวอย่างโค้ด
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const num = 3;
const chunkArray = (arr = [], num = 1) => {
const { length: l } = arr;
const elPerArr = Math.ceil(l / num);
const res = arr.reduce((acc, val, ind) => {
const curr = Math.floor(ind / elPerArr);
if (!acc[curr]) { acc[curr] = [val]; }
else { acc[curr].push(val); }
return acc;
}, []);
return res;
};
console.log(chunkArray(arr, num));
ผลลัพธ์
ค่าที่แสดงในคอนโซลจะเป็นดังนี้:
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8 ] ]