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

Trộn hai mảng luân phiên nhau trong JavaScript

Mô tả bài toán

Cho hai mảng cùng độ dài, tạo mảng mới bằng cách lấy luân phiên phần tử từ mảng 1 và mảng 2.

Ví dụ minh họa

const arr1 = [4, 3, 2, 5, 6, 8, 9];
const arr2 = [2, 1, 6, 8, 9, 4, 3];

const mergeAlernatively = (arr1, arr2) => {
  const res = [];
  for (let i = 0; i < arr1.length + arr2.length; i++) {
    if (i % 2 === 0) {
      res.push(arr1[i/2]);
    } else {
      res.push(arr2[(i-1)/2]);
    }
  }
  return res;
};

console.log(mergeAlernatively(arr1, arr2));

Kết quả

[ 4, 2, 3, 1, 2, 6, 5, 8, 6, 9, 8, 4, 9, 3 ]

Cách viết hiện đại

const mergeAlernatively = (a, b) => a.flatMap((v, i) => [v, b[i]]);

Xử lý mảng độ dài khác nhau

const merge = (a, b) => {
  const max = Math.max(a.length, b.length);
  return Array.from({length: max}, (_, i) => [a[i], b[i]]).flat().filter(v => v !== undefined);
};