Array.prototype.concat()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Die concat()
Methode von Array
Instanzen wird verwendet, um zwei oder mehr Arrays zu verketten.
Diese Methode ändert nicht die bestehenden Arrays, sondern gibt stattdessen ein neues Array zurück.
Probieren Sie es aus
Syntax
concat()
concat(value1)
concat(value1, value2)
concat(value1, value2, /* …, */ valueN)
Parameter
value1
, …,valueN
Optional-
Arrays und/oder Werte, die in ein neues Array verkettet werden sollen. Wenn alle
valueN
Parameter ausgelassen werden, gibtconcat
eine flache Kopie des bestehenden Arrays zurück, auf dem es aufgerufen wird. Siehe die Beschreibung unten für weitere Details.
Rückgabewert
Eine neue Array
Instanz.
Beschreibung
Die Methode concat
erstellt ein neues Array. Das Array wird zuerst mit den Elementen des Objekts gefüllt, auf dem es aufgerufen wird. Dann wird für jedes Argument sein Wert in das Array verkettet — bei normalen Objekten oder primitiven Typen wird das Argument selbst zu einem Element des endgültigen Arrays; bei Arrays oder array-ähnlichen Objekten mit der Eigenschaft Symbol.isConcatSpreadable
auf einen wahrheitsgetreuen Wert gesetzt, wird jedes Element des Arguments unabhängig zum endgültigen Array hinzugefügt. Die Methode concat
rekursiert nicht in geschachtelte Array-Argumente.
Die Methode concat()
ist eine kopierende Methode. Sie ändert weder this
noch eines der als Argumente bereitgestellten Arrays, sondern gibt stattdessen eine flache Kopie zurück, die dieselben Elemente wie die der ursprünglichen Arrays enthält.
Die Methode concat()
bewahrt leere Slots, falls eines der Quellarrays spärlich ist.
Die Methode concat()
ist generisch. Der this
-Wert wird auf die gleiche Weise behandelt wie die anderen Argumente (außer dass er zuerst in ein Objekt umgewandelt wird), was bedeutet, dass einfache Objekte direkt dem resultierenden Array vorangestellt werden, während array-ähnliche Objekte mit wahrheitsgetreuem [Symbol.isConcatSpreadable]
in das resultierende Array aufgelöst werden.
Beispiele
Zwei Arrays verketten
Der folgende Code verknüpft zwei 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]
Drei Arrays verketten
Der folgende Code verknüpft drei 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]
Werte zu einem Array verketten
Der folgende Code verknüpft drei Werte mit einem Array:
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 verketten
Der folgende Code verknüpft verschachtelte Arrays und demonstriert die Beibehaltung von Referenzen:
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 verketten
concat
behandelt nicht alle array-artigen Objekte standardmäßig als Arrays — nur, wenn Symbol.isConcatSpreadable
auf einen wahrheitsgetreuen Wert (z.B. true
) gesetzt ist.
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 ]
Verwendung von concat() auf spärlichen Arrays
Wenn eines der Quellarrays spärlich ist, wird das resultierende Array ebenfalls spärlich sein:
console.log([1, , 3].concat([4, 5])); // [1, empty, 3, 4, 5]
console.log([1, 2].concat([3, , 5])); // [1, 2, 3, empty, 5]
Aufruf von concat() auf Nicht-Array-Objekten
Wenn der this
-Wert kein Array ist, wird er in ein Objekt umgewandelt und dann auf dieselbe Weise wie die Argumente für concat()
behandelt. In diesem Fall ist der Rückgabewert immer ein einfaches neues 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]
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-array.prototype.concat |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Polyfill von
Array.prototype.concat
incore-js
mit Fixes und Implementierung von modernem Verhalten wieSymbol.isConcatSpreadable
Unterstützung - Indizierte Sammlungen Leitfaden
Array
Array.prototype.push()
Array.prototype.unshift()
Array.prototype.splice()
String.prototype.concat()
Symbol.isConcatSpreadable