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 Abschnitts eines Arrays als neues Array-Objekt zurück, ausgewählt von start
bis end
(end
nicht inbegriffen), wobei start
und end
die Indizes der Elemente in diesem Array darstellen. Das Originalarray wird nicht verändert.
Probieren Sie es aus
Syntax
slice()
slice(start)
slice(start, end)
Parameter
start
Optional-
Nullbasierter Index zum Start der Extraktion, umgewandelt in eine Ganzzahl.
- Ein negativer Index zählt rückwärts vom Ende des Arrays — wenn
-array.length <= start < 0
, wirdstart + array.length
verwendet. - Wenn
start < -array.length
oderstart
ausgelassen wird, wird0
verwendet. - Wenn
start >= array.length
ist, wird ein leeres Array zurückgegeben.
- Ein negativer Index zählt rückwärts vom Ende des Arrays — wenn
end
Optional-
Nullbasierter Index zum Ende der Extraktion, umgewandelt in eine Ganzzahl.
slice()
extrahiert bis, aber nicht einschließlichend
.- Ein negativer Index zählt rückwärts vom Ende des Arrays — wenn
-array.length <= end < 0
, wirdend + array.length
verwendet. - Wenn
end < -array.length
ist, wird0
verwendet. - Wenn
end >= array.length
oderend
ausgelassen wird, wirdarray.length
verwendet, wodurch alle Elemente bis zum Ende extrahiert werden. - Wenn durch
end
eine Position vor oder an der Position angegeben wird, die durchstart
impliziert ist, wird ein leeres Array zurückgegeben.
- Ein negativer Index zählt rückwärts vom Ende des Arrays — wenn
Rückgabewert
Ein neues Array, das die extrahierten Elemente enthält.
Beschreibung
Die slice()
-Methode ist eine kopierende Methode. Sie verändert this
nicht, sondern gibt stattdessen eine flache Kopie zurück, die einige der gleichen Elemente wie das Originalarray enthält.
Die slice()
-Methode bewahrt leere Plätze. Wenn der geschnittene Abschnitt 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 integerbasierte Eigenschaften hat.
Beispiele
Einen Abschnitt eines vorhandenen 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)
die Elemente von Index 1
bis, aber nicht einschließlich, Index 3
, was zu einem neuen Array ['Orange', 'Lemon']
führt.
Den Endparameter 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)
die Elemente von Index 2
bis zum Ende des Arrays.
Verwendung negativer 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 zwei Elemente des Arrays. Bei der Verwendung eines negativen Indexes mit der slice
-Methode werden negative Indizes vom Ende des Arrays gezählt, beginnend bei -1
für das letzte Element, -2
für das vorletzte 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 Startindex und eines negativen Endindex
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 dem Extrahieren ab Index 1
und reicht bis, aber schließt nicht ein, das Element an Index -1
(was das letzte Element ist). Dies führt zu einem neuen Array mit ['Banana', 'Orange', 'Mango']
. Die slice
-Methode schließt stets das Element am letzten angegebenen Index aus, unabhängig davon, ob dieser 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
Verwendung von Slice mit Arrays von Objekten
Im folgenden Beispiel erstellt slice
ein neues Array, newCar
, aus myCar
. Beide enthalten einen Verweis auf das Objekt myHonda
. Wenn die Farbe von myHonda
auf Lila geändert wird, reflektieren 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
Aufruf von slice() auf Nicht-Array-Objekten
Die slice()
-Methode liest die length
-Eigenschaft von this
. Dann liest sie die integerbasierten Eigenschaften von start
bis end
und definiert sie auf 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 Hilfsmethode 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() in spärlichen Arrays
Das von slice()
zurückgegebene Array 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 Language Specification # sec-array.prototype.slice |
Browser-Kompatibilität
BCD tables only load in the browser