แบ่งอาร์เรย์เป็น n ส่วนย่อย โดยกระจายสมาชิกทีละตัว: ตัวที่ 1 ไป subarray 0, ตัวที่ 2 ไป subarray 1, ... ตัวที่ n+1 กลับไป subarray 0 อีกครั้ง
ตัวอย่าง
Input: [656, 756, 5345, 67, 43, 76, 54, 768, 34], n = 3 Output: [[656, 67, 54], [756, 43, 768], [5345, 76, 34]]
ตัวอย่างโค้ด
const input = [656, 756, 5345, 67, 43, 76, 54, 768, 34];
const divideArray = (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(divideArray(input, 3));
การทำงาน
ind % sizeกำหนด subarray ปลายทาง (round-robin)reduceสร้างอาร์เรย์ของอาร์เรย์- ตรวจสอบ
Array.isArrayก่อน push
ผลลัพธ์
[ [ 656, 67, 54 ], [ 756, 43, 768 ], [ 5345, 76, 34 ] ]
ประยุกต์ใช้: Load balancing การกระจายงาน Round-robin scheduling