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