Start · Sprachen · JavaScript · Referenz · Array.prototype.concat()

Array.prototype.concat()

Methode

Die Methode <code>concat()</code> von <code>Array</code>-Instanzen führt zwei oder mehr Arrays zu einem neuen Array zusammen, ohne die vorhandenen Arrays zu verändern.

Kategorie: method-property

Signatur

Array.prototype.concat(value1, value2, /* …, */ valueN)

Beschreibung

Die Methode concat() von Array-Instanzen wird verwendet, um zwei oder mehr Arrays zusammenzuführen. Diese Methode verändert die vorhandenen Arrays nicht, sondern gibt stattdessen ein neues Array zurück.

Die Methode concat erstellt ein neues Array. Das Array wird zunächst mit den Elementen des Objekts befüllt, auf dem sie aufgerufen wurde. Danach wird für jedes Argument dessen Wert an das Array angehängt — bei normalen Objekten oder primitiven Werten wird das Argument selbst zu einem Element des resultierenden Arrays; bei Arrays oder array-artigen Objekten mit der Eigenschaft Symbol.isConcatSpreadable, die auf einen truthy-Wert gesetzt ist, wird jedes Element des Arguments einzeln in das resultierende Array eingefügt. Die Methode concat steigt nicht rekursiv in verschachtelte Array-Argumente ab.

Die Methode concat() ist eine kopierende Methode. Sie verändert weder this noch eines der als Argumente übergebenen Arrays, sondern gibt eine shallow copy zurück, die dieselben Elemente wie die ursprünglichen Arrays enthält.

Die Methode concat() erhält leere Slots, wenn eines der Quell-Arrays sparse (dünn besetzt) ist.

Die Methode concat() ist generisch. Der this-Wert wird auf dieselbe Weise behandelt wie die anderen Argumente (außer, dass er zuerst in ein Objekt konvertiert wird), was bedeutet, dass einfache Objekte direkt am Anfang des resultierenden Arrays eingefügt werden, während array-artige Objekte mit truthy [Symbol.isConcatSpreadable] in das resultierende Array gespreadet werden.

Parameter

Name Typ Default Beschreibung
$value1, …, valueN any Arrays und/oder Werte, die zu einem neuen Array zusammengeführt werden sollen. Werden alle valueN-Parameter weggelassen, gibt concat eine shallow copy des bestehenden Arrays zurück, auf dem sie aufgerufen wurde. Siehe die Beschreibung für weitere Details.

Rückgabewert

Typ
Array
Beschreibung
Eine neue Array-Instanz.

Beispiele

Zwei Arrays zusammenführen

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]

Drei Arrays zusammenführen

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]

Werte an ein Array anhängen

const letters = ["a", "b", "c"];

const alphaNumeric = letters.concat(1, [2, 3]);

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

Verschachtelte Arrays zusammenführen

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]]

Array-artige Objekte mit Symbol.isConcatSpreadable zusammenführen

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 ]

concat() bei sparse Arrays verwenden

console.log([1, , 3].concat([4, 5])); // [1, empty, 3, 4, 5]
console.log([1, 2].concat([3, , 5])); // [1, 2, 3, empty, 5]

concat() auf Nicht-Array-Objekten aufrufen

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]