มีหลายวิธีในการรวมอาร์เรย์ 2 ตัวใน JavaScript แต่ละวิธีมีข้อได้เสียต่างกันเรื่อง Performance, Mutability และ Browser Support
ตัวอย่างโค้ด
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Merge Arrays</title>
<style>
body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
.result, .sample { font-size: 18px; font-weight: 500; color: rebeccapurple; }
.result { color: red; }
</style>
</head>
<body>
<h1>รวมสองอาร์เรย์ใน JavaScript</h1>
<div class="sample"></div>
<div class="result"></div>
<button class="Btn">คลิกที่นี่</button>
<h3>คลิกปุ่มด้านบนเพื่อรวมสองอาร์เรย์ข้างต้นเข้าด้วยกัน</h3>
<script>
const BtnEle = document.querySelector(".Btn");
const resEle = document.querySelector(".result");
const sampleEle = document.querySelector(".sample");
const arr = [1, 2, 3, 4];
const arr1 = ["A", "B", "C", "D"];
sampleEle.innerHTML = "arr = " + arr + " arr1 = " + arr1;
// concat - ไม่ Mutate, คืน Array ใหม่
const mergedArr = arr.concat(arr1);
BtnEle.addEventListener("click", () => {
resEle.innerHTML = "Merged array = " + mergedArr;
});
</script>
</body>
</html>
วิธีการรวม Array ทั้งหมด
| วิธี | Code | Mutates? | Performance | รองรับ |
|---|---|---|---|---|
| concat | arr1.concat(arr2) | ❌ ไม่ | ดี | ทุก Browser |
| Spread | [...arr1, ...arr2] | ❌ ไม่ | ดี (ES6+) | Modern |
| push + spread | arr1.push(...arr2) | ✅ ใช่ (arr1) | ดี | ES6+ |
| forEach + push | arr2.forEach(x => arr1.push(x)) | ✅ ใช่ (arr1) | ช้ากว่า | ทุก Browser |
| flat | [arr1, arr2].flat() | ❌ ไม่ | ดี | ES2019+ |
รวมหลาย Array
const a = [1, 2];
const b = [3, 4];
const c = [5, 6];
// concat
const merged1 = a.concat(b, c); // [1,2,3,4,5,6]
// Spread
const merged2 = [...a, ...b, ...c]; // [1,2,3,4,5,6]
// flat (สำหรับ Array of Arrays)
const merged3 = [a, b, c].flat(); // [1,2,3,4,5,6]
⚠️ ข้อควรระวัง
push(...arr)มีข้อจำกัด Maximum Call Stack Size (~65k elements)- Spread Operator ก็มีข้อจำกัด Argument Length เหมือนกัน
- Array ขนาดใหญ่มาก ควรใช้
concatหรือ Loop แบบ Chunk
ผลลัพธ์
Merged array = 1,2,3,4,A,B,C,D