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

แบ่งอาร์เรย์เป็นกลุ่ม (Chunking) ใน JavaScript

เราต้องเขียนฟังก์ชัน chunk() ที่รับอาร์เรย์ arr ของสตริง/ตัวเลขเป็นอาร์กิวเมนต์ตัวแรก และตัวเลข n เป็นอาร์กิวเมนต์ตัวที่สอง

เราต้องคืนค่าอาร์เรย์ของ n ซับอาร์เรย์ โดยแต่ละซับอาร์เรย์มีองค์ประกอบสูงสุด arr.length / n ตัว และการกระจายองค์ประกอบควรเป็นแบบนี้:

องค์ประกอบตัวแรกไปในซับอาร์เรย์ตัวแรก ตัวที่สองไปในตัวที่สอง ตัวที่สามไปในตัวที่สาม ไปเรื่อยๆ เมื่อแต่ละซับอาร์เรย์มีหนึ่งองค์ประกอบแล้ว เรากลับมาเติมองค์ประกอบที่สองในซับอาร์เรย์ตัวแรก อีกครั้ง ทำนองเดียวกันเมื่อทุกซับอาร์เรย์มีสององค์ประกอบแล้ว เราเข้าไปเติมองค์ประกอบที่สามในตัวแรก และไปเรื่อยๆ

ตัวอย่างเช่น:

// หากอาร์เรย์อินพุตคือ:
const input = [1, 2, 3, 4, 5, 6];
// ผลลัพธ์ควรเป็น:
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 ] ]