--- title: Array.prototype.concat() slug: Web/JavaScript/Reference/Global_Objects/Array/concat translation_of: Web/JavaScript/Reference/Global_Objects/Array/concat ---
{{JSRef}}

Phương thức concat() dùng để kết nối 2 hay nhiều mảng với nhau. Phương thức này  không làm thay đổi các mảng đã có mà thay vào đó sẽ trả về 1 mảng mới.

{{EmbedInteractiveExample("pages/js/array-concat.html")}}

Cú pháp

var newArray = oldArray.concat(value1[, value2[, ...[, valueN]]])

Tham số

valueN
Các giá trị hay mảng dùng để nối lại với nhau trong mảng mới .

Giá trị trả về

Một mảng {{jsxref("Array")}} mới.

Mô tả

Phương thức concat tạo ra 1 mảng mới bao gồm các phần tử trong đối tượng mà nó được gọi thực thi, và theo thứ tự lần lượt, với mỗi tham số truyền vào là các phần tử của tham số đó (nếu tham số truyền vào là 1 mảng) hoặc là chính tham số đó (nếu tham số truyền vào không  phải là 1 mảng). Phương thức này sẽ không thực thi 1 cách đệ quy cho các tham số là mảng lồng nhau.

Phương thức concat không thay đổi this (mảng được gọi thực thi)  hay bất cứ mảng được truyền vào làm tham số mà thay vào đó nó sẽ trả về 1 bản sao tham chiếu (shallow copy) bao gồm các bản sao của cùng 1 phần tử được kết hợp từ các mảng ban đầu. Các phần từ của mảng ban đầu được sao chép vào mảng mới như sau: 

Chú ý: Việc ghép nối các mảng hay giá trị sẽ không "đụng chạm" tới các giá trị ban đầu. Hơn nữa, bất cứ thao tác nào trên mảng trả về (ngoại trừ các thao tác trên các phần từ là tham chiếu đối tượng) sẽ không ảnh hưởng tới các mảng ban đầu, và ngược lại.

Ví dụ

Nối 2 mảng

Đoạn mã dưới đây sẽ nối 2 mảng lại với nhau:

var alpha = ['a', 'b', 'c'];
var numeric = [1, 2, 3];

alpha.concat(numeric);
// result in ['a', 'b', 'c', 1, 2, 3]

Nối 3 mảng

Đoạn mã dưới đây sẽ nối 3 mảng lại với nhau

var num1 = [1, 2, 3],
    num2 = [4, 5, 6],
    num3 = [7, 8, 9];

var nums = num1.concat(num2, num3);

console.log(nums);
// results in [1, 2, 3, 4, 5, 6, 7, 8, 9]

Nối các giá trị vào 1 mảng

Đoạn mã sau đây sẽ nối 3 giá trị vào 1 mảng:

var alpha = ['a', 'b', 'c'];

var alphaNumeric = alpha.concat(1, [2, 3]);

console.log(alphaNumeric);
// results in ['a', 'b', 'c', 1, 2, 3]

Nối mảng lồng nhau

Đoạn mã sau đây sẽ nối các mảng lồng nhau và thể hiện sự lưu trữ tham chiếu:

var num1 = [[1]];
var num2 = [2, [3]];

var nums = num1.concat(num2);

console.log(nums);
// results in [[1], 2, [3]]

// modify the first element of num1
num1[0].push(4);

console.log(nums);
// results in [[1, 4], 2, [3]]

Đặc tả

Đặc tả Trạng thái Ghi chú
{{SpecName('ES3')}} {{Spec2('ES3')}} Định nghĩa lần đầu. Hiện thực trong JavaScript 1.2.
{{SpecName('ES5.1', '#sec-15.4.4.4', 'Array.prototype.concat')}} {{Spec2('ES5.1')}}  
{{SpecName('ES6', '#sec-array.prototype.concat', 'Array.prototype.concat')}} {{Spec2('ES6')}}  
{{SpecName('ESDraft', '#sec-array.prototype.concat', 'Array.prototype.concat')}} {{Spec2('ESDraft')}}  

Tương thích trình duyệt

{{Compat("javascript.builtins.Array.concat")}}

Xem thêm