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

Array.prototype.slice()

Methode

Die <code>slice()</code>-Methode gibt eine flache Kopie eines Teils eines Arrays als neues Array zurück, ohne das Original zu verändern.

Kategorie: method-property

Signatur

slice() / slice(start) / slice(start, end)

Beschreibung

Die slice()-Methode von Array-Instanzen gibt eine flache Kopie (shallow copy) eines Ausschnitts eines Arrays als neues Array-Objekt zurück, ausgewählt von start bis end (end nicht enthalten), wobei start und end die Indizes der Elemente in diesem Array darstellen. Das ursprüngliche Array wird nicht verändert.

Die slice()-Methode ist eine kopierende Methode. Sie verändert this nicht, sondern gibt stattdessen eine shallow copy zurück, die einige der gleichen Elemente wie das ursprüngliche Array enthält.

Die slice()-Methode bewahrt leere Slots. Wenn der ausgeschnittene Bereich sparse (dünn besetzt) ist, ist auch das zurückgegebene Array sparse.

Die slice()-Methode ist generisch. Sie erwartet lediglich, dass der this-Wert eine length-Eigenschaft und ganzzahlig indizierte Eigenschaften besitzt.

Parameter

Name Typ Default Beschreibung
$start number Nullbasierter Index, an dem die Extraktion beginnt, in eine Ganzzahl konvertiert. Ein negativer Index zählt vom Ende des Arrays zurück — wenn -array.length <= start < 0, wird start + array.length verwendet. Wenn start < -array.length ist oder start weggelassen wird, wird 0 verwendet. Wenn start >= array.length, wird ein leeres Array zurückgegeben.
$end number Nullbasierter Index, an dem die Extraktion endet, in eine Ganzzahl konvertiert. slice() extrahiert bis, aber ohne end. Ein negativer Index zählt vom Ende des Arrays zurück — wenn -array.length <= end < 0, wird end + array.length verwendet. Wenn end < -array.length, wird 0 verwendet. Wenn end >= array.length oder end weggelassen wird oder undefined ist, wird array.length verwendet, sodass alle Elemente bis zum Ende extrahiert werden. Wenn end eine Position vor oder an der Position impliziert, die start impliziert, wird ein leeres Array zurückgegeben.

Rückgabewert

Typ
Array
Beschreibung
Ein neues Array, das die extrahierten Elemente enthält.

Beispiele

Einen Ausschnitt 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']

Weglassen des end-Parameters

const fruits = ["Apple", "Banana", "Orange", "Mango", "Pineapple"];

const tropical = fruits.slice(2);
console.log(tropical); // ['Orange', 'Mango', 'Pineapple']

Verwendung negativer Indizes

const fruits = ["Apple", "Banana", "Orange", "Mango", "Pineapple"];

const lastTwo = fruits.slice(-2);
console.log(lastTwo); // ['Mango', 'Pineapple']

Verwendung eines positiven start-Index und eines negativen end-Index

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

slice mit Arrays von Objekten verwenden

// 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);
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

slice() auf Nicht-Array-Objekten aufrufen

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 ]

slice() zur Umwandlung von array-ähnlichen Objekten in Arrays verwenden

// 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 listResult = list(1, 2, 3); // [1, 2, 3]

slice() auf sparse Arrays anwenden

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