Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Thay đổi hình dạng mảng 2-D bằng JavaScript


Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng 2-D số, arr, làm đối số đầu tiên và hai số, r và c, đại diện cho số hàng và số cột của ma trận mong muốn.

Hàm phải tạo và trả về một mảng 2-D mới với hàng và cột chỉ định theo cùng thứ tự duyệt hàng (row-traversing) như mảng đầu vào.

Ví dụ, nếu đầu vào là:

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

Thì đầu ra nên là:

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

Giải thích kết quả

Duyệt theo hàng của arr là [6, 7, 8, 9]. Ma trận reshape mới là 1 * 4, lấp đầy hàng theo hàng dùng danh sách trước.

Ví dụ

Dưới đây là mã:

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));

Kết quả

Kết quả console:

[[6, 7, 8, 9]]