The concat()
method of Array
instances is used to merge two or more arrays. This method does not change the existing arrays, but instead returns a new array.
The concat()
method of Array
instances is used to merge two or more arrays. This method does not change the existing arrays, but instead returns a new array.
concat() concat(value1) concat(value1, value2) concat(value1, value2, /* …, */ valueN)
value1
, …, valueN
Optional
Arrays and/or values to concatenate into a new array. If all valueN
parameters are omitted, concat
returns a shallow copy of the existing array on which it is called. See the description below for more details.
A new Array
instance.
The concat
method creates a new array. The array will first be populated by the elements in the object on which it is called. Then, for each argument, its value will be concatenated into the array — for normal objects or primitives, the argument itself will become an element of the final array; for arrays or array-like objects with the property Symbol.isConcatSpreadable
set to a truthy value, each element of the argument will be independently added to the final array. The concat
method does not recurse into nested array arguments.
The concat()
method is a copying method. It does not alter this
or any of the arrays provided as arguments but instead returns a shallow copy that contains the same elements as the ones from the original arrays.
The concat()
method preserves empty slots if any of the source arrays is sparse.
The concat()
method is generic. The this
value is treated in the same way as the other arguments (except it will be converted to an object first), which means plain objects will be directly prepended to the resulting array, while array-like objects with truthy @@isConcatSpreadable
will be spread into the resulting array.
The following code concatenates two arrays:
const letters = ["a", "b", "c"]; const numbers = [1, 2, 3]; const alphaNumeric = letters.concat(numbers); console.log(alphaNumeric); // results in ['a', 'b', 'c', 1, 2, 3]
The following code concatenates three arrays:
const num1 = [1, 2, 3]; const num2 = [4, 5, 6]; const num3 = [7, 8, 9]; const numbers = num1.concat(num2, num3); console.log(numbers); // results in [1, 2, 3, 4, 5, 6, 7, 8, 9]
The following code concatenates three values to an array:
const letters = ["a", "b", "c"]; const alphaNumeric = letters.concat(1, [2, 3]); console.log(alphaNumeric); // results in ['a', 'b', 'c', 1, 2, 3]
The following code concatenates nested arrays and demonstrates retention of references:
const num1 = [[1]]; const num2 = [2, [3]]; const numbers = num1.concat(num2); console.log(numbers); // results in [[1], 2, [3]] // modify the first element of num1 num1[0].push(4); console.log(numbers); // results in [[1, 4], 2, [3]]
concat
does not treat all array-like objects as arrays by default — only if Symbol.isConcatSpreadable
is set to a truthy value (e.g. true
).
const obj1 = { 0: 1, 1: 2, 2: 3, length: 3 }; const obj2 = { 0: 1, 1: 2, 2: 3, length: 3, [Symbol.isConcatSpreadable]: true }; console.log([0].concat(obj1, obj2)); // [ 0, { '0': 1, '1': 2, '2': 3, length: 3 }, 1, 2, 3 ]
If any of the source arrays is sparse, the resulting array will also be sparse:
console.log([1, , 3].concat([4, 5])); // [1, empty, 3, 4, 5] console.log([1, 2].concat([3, , 5])); // [1, 2, 3, empty, 5]
If the this
value is not an array, it is converted to an object and then treated in the same way as the arguments for concat()
. In this case the return value is always a plain new array.
console.log(Array.prototype.concat.call({}, 1, 2, 3)); // [{}, 1, 2, 3] console.log(Array.prototype.concat.call(1, 2, 3)); // [ [Number: 1], 2, 3 ] const arrayLike = { [Symbol.isConcatSpreadable]: true, length: 2, 0: 1, 1: 2, 2: 99, // ignored by concat() since length is 2 }; console.log(Array.prototype.concat.call(arrayLike, 3, 4)); // [1, 2, 3, 4]
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | Deno | Node.js | ||
concat |
1 | 12 | 1 | 4 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1.0 | 0.10.0 |
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat