Toán tử + trong JavaScript dùng cho cộng số hoặc nối chuỗi. Khi một vế là mảng, JS chuyển mảng thành chuỗi bằng toString() (tương đương join(',')) rồi nối chuỗi.
Quy trình đánh giá
[1,2] + [3,4] // 1. ToString() từng mảng '1,2' + '3,4' // 2. Nối chuỗi '1,23,4'
Cách đúng để nối mảng
1. concat() – Tạo mảng mới (khuyên dùng)
const a = [1,2]; const b = [3,4]; const c = a.concat(b); // [1,2,3,4] - a, b không đổi
2. Spread operator (ES6) – Ngắn gọn, hiện đại
const c = [...a, ...b]; // [1,2,3,4]
3. push() + spread – Mutate mảng gốc
a.push(...b); // a = [1,2,3,4]
4. Array.flat() – Nối nhiều mảng lồng nhau
const arrays = [[1,2], [3,4], [5,6]]; const flat = arrays.flat(); // [1,2,3,4,5,6]
Bảng so sánh
| Phương pháp | Mutate gốc? | Hiệu năng | Hỗ trợ |
|---|---|---|---|
concat() | Không | Tốt | Tất cả |
[...a, ...b] | Không | Tốt | ES6+ |
push(...b) | Có (a) | Tốt (tránh tạo mảng trung gian) | ES6+ |
a + b | N/A (trả về string) | Kém | Tất cả (nhưng sai logic) |