los slice() El método devuelve una copia superficial de una parte de un array en un nuevo array objeto seleccionado de start para end (end no incluido) donde start y end representan el índice de elementos en ese array. El original array no se modificará.

Sintaxis

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

Parámetros

startOpcional

Índice de base cero en el que comenzar la extracción.

Se puede utilizar un índice negativo, que indica un desplazamiento desde el final de la secuencia. slice(-2) extrae los dos últimos elementos de la secuencia.

Si start es indefinido, slice comienza desde el índice 0.

Si start es mayor que el rango de índice de la secuencia, un vacío array es regresado.

endOpcional

Índice de base cero antes de que poner fin a la extracción. slice extrae hasta pero sin incluir end. Por ejemplo, slice(1,4) extrae el segundo elemento al cuarto elemento (elementos indexados 1, 2 y 3).

Se puede utilizar un índice negativo, que indica un desplazamiento desde el final de la secuencia. slice(2,-1) extrae el tercer elemento a través del penúltimo elemento de la secuencia.

Si end se omite, slice extrae hasta el final de la secuencia (arr.length).

Si end es mayor que la longitud de la secuencia, slice extrae hasta el final de la secuencia (arr.length).

Valor devuelto

Un nuevo array que contiene los elementos extraídos.

Descripción

slice no altera el original array. Devuelve una copia superficial de elementos del original. array. Elementos del original array se copian en el devuelto array como sigue:

  • Por objeto slice copia referencias de objeto en el nuevo array. Tanto el original como el nuevo array se refieren al mismo objeto. Si un objeto cambia, los cambios son visibles tanto para las matrices nuevas como para las originales.
  • Para cadenas, números y valores booleanos (no String, Number y Boolean objetos), slice copia los valores en el nuevo array. Cambios en el string, número o booleano en uno array no afectan al otro array.

Si se agrega un nuevo elemento a array, el otro array No es afectado.

Ejemplos de

Devolver una parte de un array

let fruits =['Banana','Orange','Lemon','Apple','Mango']let citrus = fruits.slice(1,3)// fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']// citrus contains ['Orange','Lemon']

Usando rebanada

En el siguiente ejemplo, slice crea un nuevo array, newCar, de myCar. Ambos incluyen una referencia al objeto myHonda. Cuando el color de myHonda cambia a violeta, ambas matrices reflejan el cambio.

// Using slice, create newCar from myCar.let myHonda = color:'red', wheels:4, engine: cylinders:4, size:2.2let myCar =[myHonda,2,'cherry condition','purchased 1997']let newCar = myCar.slice(0,2)// Display the values of myCar, newCar, and the color of myHonda//  referenced from both arrays.
console.log('myCar = '+JSON.stringify(myCar))
console.log('newCar = '+JSON.stringify(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)// Display the color of myHonda referenced from both arrays.
console.log('myCar[0].color = '+ myCar[0].color)
console.log('newCar[0].color = '+ newCar[0].color)

Este script escribe:

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 newcolorof my Honda is purple
myCar[0].color = purple
newCar[0].color = purple

Objetos tipo matriz

slice También se puede llamar al método para convertir objetos / colecciones similares a Array en un nuevo Array. Tu solo bind el método al objeto. los arguments dentro de una función es un ejemplo de un ‘array-como objeto ‘.

functionlist()returnArray.prototype.slice.call(arguments)let list1 =list(1,2,3)// [1, 2, 3]

La encuadernación se puede hacer con el call() método de Function y también se puede reducir usando [].slice.call(arguments) en lugar de Array.prototype.slice.call.

De todos modos, se puede simplificar usando bind.

let unboundSlice =Array.prototype.slice
let slice =Function.prototype.call.bind(unboundSlice)functionlist()returnslice(arguments)let list1 =list(1,2,3)// [1, 2, 3]

Especificaciones

Especificación
Especificación del lenguaje ECMAScript (ECMAScript)
#segundo-array.prototype.slice

Compatibilidad del navegador

Escritorio Móvil
Cromo Borde Firefox explorador de Internet Ópera Safari WebView Android Chrome Android Firefox para Android Opera Android Safari en IOS Internet de Samsung
slice 1 12 1 4 4 1 1 18 4 10.1 1 1.0

Ver también

  • Array.prototype.splice()
  • Function.prototype.call()
  • Function.prototype.bind()