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

แยกอาร์เรย์หนึ่งมิติออกเป็นอาร์เรย์สองมิติ JavaScript


เราจำเป็นต้องเขียนฟังก์ชันที่ใช้อาร์เรย์หนึ่งมิติเป็นอาร์กิวเมนต์แรกและตัวเลข n เป็นอาร์กิวเมนต์ที่สอง และเราต้องทำ n อาร์เรย์ย่อยภายใน parentarray (**ถ้าเป็นไปได้) และแบ่งองค์ประกอบตามนั้น

** ถ้าอาร์เรย์มี 9 องค์ประกอบ และเราขอให้สร้าง 4 อาร์เรย์ย่อย จากนั้นหาร 2 องค์ประกอบในแต่ละอาร์เรย์ย่อยจะสร้าง 5 อาร์เรย์ย่อยและ 3 ในแต่ละสร้าง 3 ดังนั้นในกรณีดังกล่าว เราจึงต้องถอยกลับไปยังระดับต่ำสุดที่ใกล้ที่สุด (3 ในกรณีนี้) เพราะ ความต้องการของเราคือแจกจ่ายจำนวนองค์ประกอบเท่ากันในแต่ละอาร์เรย์ย่อย ยกเว้นอันสุดท้ายในบางกรณีพิเศษ

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

// if the input array is:
const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'];
// and the number is 2
//then the output should be:
const output = [ [ 'A', 'B', 'C', 'D', 'E' ], [ 'F', 'G', 'H', 'I' ] ];

มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน −

ตัวอย่าง

const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'];
const splitArray = (arr, rows) => {
   const itemsPerRow = Math.ceil(arr.length / rows);
   return arr.reduce((acc, val, ind) => {
      const currentRow = Math.floor(ind / itemsPerRow);
      if(!acc[currentRow]){
         acc[currentRow] = [val];
      }else{
         acc[currentRow].push(val);
      };
      return acc;
   }, []);
};
console.log(splitArray(arr, 2));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

[ [ 'A', 'B', 'C', 'D', 'E' ], [ 'F', 'G', 'H', 'I' ] ]