--- title: Array.prototype.concat() slug: Web/JavaScript/Reference/Global_Objects/Array/concat translation_of: Web/JavaScript/Reference/Global_Objects/Array/concat ---
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.
var newArray = oldArray.concat(value1[, value2[, ...[, valueN]]])
valueN
Một mảng {{jsxref("Array")}} mới.
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:
concat
sao chép tham chiếu đối tượng vào mảng mới. Cả mảng ban đầu và mảng mới đều tham chiếu tới cùng 1 đối tượng. Nghĩa là nếu đối tượng được tham chiếu tới bị thay đổi thì việc thay đổi đó sẽ ảnh hưởng trong cả mảng ban đầu và mảng mới. Điều này bao gồm các phần tử của các mảng làm tham số cũng đều là mảng. concat
sẽ sao chép giá trị của chuỗi, số vào mảng mới.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.
Đ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]
Đ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]
Đ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]
Đ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ả | 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')}} |
{{Compat("javascript.builtins.Array.concat")}}