Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào bất kỳ số lượng mảng chữ nào làm đầu vào. Hàm phải chuẩn bị một mảng mới chứa các phần tử được chọn xen kẽ từ tất cả các mảng đầu vào.
Ví dụ, nếu đầu vào là:
Đầu vào
const arr1 = [1, 2, 3, 4]; const arr2 = [11, 12, 13, 14]; const arr3 = ['a', 'b', 'c'];
Đầu ra
const output = [1, 11, 'a', 2, 12, 'b', 3, 13, 'c', 4, 14];
Ví dụ
Dưới đây là mã thực hiện:
const arr1 = [1, 2, 3, 4];
const arr2 = [11, 12, 13, 14];
const arr3 = ['a', 'b', 'c'];
const pickElements = (...arrs) => {
const res = [];
const max = Math.max(...arrs.map(el => el.length));
for (let i = 0; i < max; i++) {
for (let j = 0; j < arrs.length; j++) {
if (arrs[j][i]) {
res.push(arrs[j][i]);
}
}
}
return res;
};
console.log(pickElements(arr1, arr2, arr3));
Kết quả
[1, 11, 'a', 2, 12, 'b', 3, 13, 'c', 4, 14]