Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การรวมอาร์เรย์ซ้อนกันเพื่อสร้างอาร์เรย์ 1 มิติใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ซ้อนกันสองอาร์เรย์ arr1 และ arr2 เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์ที่สอง

ฟังก์ชันควรสร้างและคืนค่าอาร์เรย์ที่สามซึ่งประกอบด้วยทุกองค์ประกอบของ arr1 และ arr2 แต่ถูกแบน (flatten) ให้กลายเป็นมิติเดียว

ตัวอย่างเช่น หากอินพุตคือ

const arr1 = [
1, [
2, [
4, 5, [
6
]
]
]
];
const arr2 = [
11, 12, [
16, 18, [
19, 21, [
23
]
]
]
];

ผลลัพธ์ควรเป็น

const output = [1, 2, 4, 5, 6, 11, 12, 16, 18, 19, 21, 23];

ตัวอย่างโค้ด

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

ผลลัพธ์

[ 1, 2, 4, 5, 6, 11, 12, 16, 18, 19, 21, 23 ]