Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

Chunking array ภายในอาร์เรย์ใน JavaScript


เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลขเป็นอาร์กิวเมนต์แรกและตัวเลขเดียว เช่น num เป็นอาร์กิวเมนต์ที่สอง Num จะน้อยกว่าหรือเท่ากับความยาวของอาร์เรย์เสมอ

ฟังก์ชันควรเตรียมอาร์เรย์ใหม่ที่ต้องมีจำนวนอาร์เรย์ย่อยจำนวน num อาร์เรย์ย่อยทั้งหมดควรมีจำนวนอาร์เรย์เท่ากัน หากความยาวของอาร์เรย์หารด้วย num ลงตัวพอดี ไม่เช่นนั้นเฉพาะอาร์เรย์ย่อยสุดท้ายเท่านั้นที่ควรมีจำนวนองค์ประกอบต่างกัน

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

หากอาร์เรย์อินพุตและตัวเลขเป็น −

const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const num = 3;

ดังนั้นเอาต์พุตสำหรับอินพุตด้านบนควรมีลักษณะดังนี้ −

const output = [
   [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 ] ]