Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การแบ่งอาร์เรย์เป็น n ส่วนย่อยแบบกระจาย - JavaScript

แบ่งอาร์เรย์เป็น 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