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

การปรับรูปร่างอาร์เรย์ 2 มิติใหม่ใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ 2 มิติของตัวเลข arr เป็นอาร์กิวเมนต์แรกและตัวเลขสองตัว r และ c แทน แถว ​​ ตัวเลขและ คอลัมน์ จำนวนเมทริกซ์ที่ต้องการตามลำดับ

ฟังก์ชันของเราควรสร้างและส่งกลับอาร์เรย์ 2 มิติใหม่โดยมีแถวและคอลัมน์ที่ระบุใน การข้ามผ่านแถว เดียวกัน เรียงลำดับตามที่อยู่ในอาร์เรย์อินพุต

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

const arr = [
   [6, 7],
   [8, 9]
];
const r = 1, c = 4;

จากนั้นผลลัพธ์ควรเป็น −

const output = [[6, 7, 8, 9]];

คำอธิบายผลลัพธ์

การข้ามแถว ของ arr คือ [6, 7, 8, 9] เมทริกซ์ที่ปรับรูปร่างใหม่เป็นเมทริกซ์ 1 * 4 เติมทีละแถวโดยใช้รายการก่อนหน้า

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr = [
   [6, 7],
   [8, 9]
];
const r = 1, c = 4;
const reshapeArray = (arr, r, c) => {
   if (r * c !== arr.length * arr[0].length) {
      return arr
   }
   const res = []
   let row = []
   arr.forEach(items => items.forEach((num) => {
      row.push(num)
      if (row.length === c) {
         res.push(row)
         row = []
      }
   }))
   return res
};
console.log(reshapeArray(arr, r, c));

ผลลัพธ์

ต่อไปนี้เป็นเอาต์พุตคอนโซล -

[[6, 7, 8, 9]]