Array.prototype.slice()
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 slice() Methode von Array Instanzen gibt eine flache Kopie eines Teils
eines Arrays in ein neues Array-Objekt zurück, das von start bis end
(end nicht eingeschlossen) ausgewählt wird, wobei start und end den Index der Elemente in diesem Array darstellen. Das ursprüngliche Array wird nicht verändert.
Probieren Sie es aus
const animals = ["ant", "bison", "camel", "duck", "elephant"];
console.log(animals.slice(2));
// Expected output: Array ["camel", "duck", "elephant"]
console.log(animals.slice(2, 4));
// Expected output: Array ["camel", "duck"]
console.log(animals.slice(1, 5));
// Expected output: Array ["bison", "camel", "duck", "elephant"]
console.log(animals.slice(-2));
// Expected output: Array ["duck", "elephant"]
console.log(animals.slice(2, -1));
// Expected output: Array ["camel", "duck"]
console.log(animals.slice());
// Expected output: Array ["ant", "bison", "camel", "duck", "elephant"]
Syntax
slice()
slice(start)
slice(start, end)
Parameter
startOptional-
Nullbasierter Index, bei dem die Extraktion beginnt, in eine Ganzzahl konvertiert.
- Ein negativer Index zählt vom Ende des Arrays zurück — wenn
-array.length <= start < 0, wirdstart + array.lengthverwendet. - Wenn
start < -array.lengthoderstartausgelassen wird, wird0verwendet. - Wenn
start >= array.length, wird ein leeres Array zurückgegeben.
- Ein negativer Index zählt vom Ende des Arrays zurück — wenn
endOptional-
Nullbasierter Index, bei dem die Extraktion endet, in eine Ganzzahl konvertiert.
slice()extrahiert bis, aber nicht einschließlichend.- Ein negativer Index zählt vom Ende des Arrays zurück — wenn
-array.length <= end < 0, wirdend + array.lengthverwendet. - Wenn
end < -array.length, wird0verwendet. - Wenn
end >= array.lengthoderendausgelassen oderundefinedist, wirdarray.lengthverwendet, wodurch alle Elemente bis zum Ende extrahiert werden. - Wenn
endeine Position vor oder an der Position impliziert, diestartimpliziert, wird ein leeres Array zurückgegeben.
- Ein negativer Index zählt vom Ende des Arrays zurück — wenn
Rückgabewert
Ein neues Array, das die extrahierten Elemente enthält.
Beschreibung
Die slice() Methode ist eine Kopiermethode. Sie verändert this nicht, sondern gibt eine flache Kopie zurück, die einige der gleichen Elemente wie die des ursprünglichen Arrays enthält.
Die slice() Methode erhält leere Stellen bei. Wenn der geschnittene Teil spärlich ist, ist das zurückgegebene Array ebenfalls spärlich.
Die slice() Methode ist generisch. Sie erwartet nur, dass der this Wert eine length Eigenschaft und ganzzahlindizierte Eigenschaften hat.
Beispiele
Einen Teil eines bestehenden Arrays zurückgeben
const fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
const citrus = fruits.slice(1, 3);
// fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
// citrus contains ['Orange','Lemon']
In diesem Beispiel extrahiert slice(1, 3) Elemente vom Index 1 bis, aber nicht einschließlich, Index 3, was zu einem neuen Array ['Orange', 'Lemon'] führt.
Das End-Parameter auslassen
const fruits = ["Apple", "Banana", "Orange", "Mango", "Pineapple"];
const tropical = fruits.slice(2);
console.log(tropical); // ['Orange', 'Mango', 'Pineapple']
In diesem Beispiel extrahiert slice(2) Elemente vom Index 2 bis zum Ende des Arrays.
Verwenden von negativen Indizes
const fruits = ["Apple", "Banana", "Orange", "Mango", "Pineapple"];
const lastTwo = fruits.slice(-2);
console.log(lastTwo); // ['Mango', 'Pineapple']
In diesem Beispiel extrahiert slice(-2) die letzten beiden Elemente des Arrays. Beim Verwenden eines negativen Indexes mit der slice Methode werden negative Indizes vom Ende des Arrays aus gezählt, beginnend bei -1 für das letzte Element, -2 für das zweitletzte Element, und so weiter. Der negative Index -2 selbst wird eingeschlossen, da er der Startpunkt der Extraktion ist.
| | | | | | | S | L | I | C | E | | | | | | | -5 -4 -3 -2 -1 <--- read from reverse
Verwendung eines positiven Start- und eines negativen End-Indexes
const fruits = ["Apple", "Banana", "Orange", "Mango", "Pineapple"];
// Using positive start index and negative end index
const sliceExample = fruits.slice(1, -1);
console.log(sliceExample); // ['Banana', 'Orange', 'Mango']
In diesem Beispiel beginnt slice(1, -1) mit der Extraktion ab Index 1 und geht bis, schließt aber das Element bei Index -1 (das letzte Element) nicht ein. Dies führt zu einem neuen Array mit ['Banana', 'Orange', 'Mango']. Die slice Methode schließt immer das Element am final angegebenen Index aus, unabhängig davon, ob es positiv oder negativ ist.
read from start ---> 0 1 2 3 4 | | | | | | | S | L | I | C | E | | | | | | | -5 -4 -3 -2 -1 <--- read from reverse
Verwenden von slice mit Arrays von Objekten
Im folgenden Beispiel erstellt slice ein neues Array, newCar,
aus myCar. Beide beinhalten eine Referenz zum Objekt myHonda.
Wenn die Farbe von myHonda auf Violett geändert wird, zeigen beide Arrays die Änderung.
// Using slice, create newCar from myCar.
const myHonda = {
color: "red",
wheels: 4,
engine: { cylinders: 4, size: 2.2 },
};
const myCar = [myHonda, 2, "cherry condition", "purchased 1997"];
const newCar = myCar.slice(0, 2);
console.log("myCar =", myCar);
console.log("newCar =", newCar);
console.log("myCar[0].color =", myCar[0].color);
console.log("newCar[0].color =", newCar[0].color);
// Change the color of myHonda.
myHonda.color = "purple";
console.log("The new color of my Honda is", myHonda.color);
console.log("myCar[0].color =", myCar[0].color);
console.log("newCar[0].color =", newCar[0].color);
Dieses Skript schreibt:
myCar = [
{ color: 'red', wheels: 4, engine: { cylinders: 4, size: 2.2 } },
2,
'cherry condition',
'purchased 1997'
]
newCar = [ { color: 'red', wheels: 4, engine: { cylinders: 4, size: 2.2 } }, 2 ]
myCar[0].color = red
newCar[0].color = red
The new color of my Honda is purple
myCar[0].color = purple
newCar[0].color = purple
Aufrufen von slice() auf Nicht-Array-Objekten
Die slice() Methode liest die length Eigenschaft von this. Sie liest dann die ganzzahlindizierten Eigenschaften von start bis end und definiert sie in einem neu erstellten Array.
const arrayLike = {
length: 3,
0: 2,
1: 3,
2: 4,
3: 33, // ignored by slice() since length is 3
};
console.log(Array.prototype.slice.call(arrayLike, 1, 3));
// [ 3, 4 ]
Verwendung von slice() zur Umwandlung von array-ähnlichen Objekten in Arrays
Die slice() Methode wird oft mit bind() und call() verwendet, um eine Hilfsmethoden-Funktion zu erstellen, die ein array-ähnliches Objekt in ein Array umwandelt.
// slice() is called with `this` passed as the first argument
const slice = Function.prototype.call.bind(Array.prototype.slice);
function list() {
return slice(arguments);
}
const list1 = list(1, 2, 3); // [1, 2, 3]
Verwendung von slice() auf spärlichen Arrays
Das Array, das von slice() zurückgegeben wird, kann spärlich sein, wenn die Quelle spärlich ist.
console.log([1, 2, , 4, 5].slice(1, 4)); // [2, empty, 4]
Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification # sec-array.prototype.slice |