Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào hai mảng lồng nhau arr1 và arr2 làm đối số thứ nhất và thứ hai. Hàm phải tạo và trả về một mảng thứ ba chứa tất cả các phần tử của arr1 và arr2 nhưng được làm phẳng thành một chiều.
Ví dụ, nếu đầu vào là:
const arr1 = [1, [2, [4, 5, [6]]]]; const arr2 = [11, 12, [16, 18, [19, 21, [23]]]];
Thì đầu ra sẽ là:
const output = [1, 2, 4, 5, 6, 11, 12, 16, 18, 19, 21, 23];
Ví dụ
Dưới đây là mã thực hiện:
const arr1 = [1, [2, [4, 5, [6]]]];
const arr2 = [11, 12, [16, 18, [19, 21, [23]]]];
const flattenAndMerge = (arr1 = [], arr2 = []) => {
const res = [];
const flatten = (arr = []) => {
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
flatten(arr[i]);
} else if (typeof arr[i] === 'number') {
res.push(arr[i]);
}
}
};
flatten(arr1);
flatten(arr2);
return res;
};
console.log(flattenAndMerge(arr1, arr2));
Kết quả
Đầu ra trên console:
[1, 2, 4, 5, 6, 11, 12, 16, 18, 19, 21, 23]