Por fin después de tanto luchar ya dimos con la contestación de este enigma que muchos de nuestros usuarios de este sitio han presentado. Si tienes algún detalle que aportar no dejes de aportar tu conocimiento.
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
start
Opcional-
Í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 índice0
.Si
start
es mayor que el rango de índice de la secuencia, un vacío array es regresado. end
Opcional-
Índice de base cero antes de que poner fin a la extracción.
slice
extrae hasta pero sin incluirend
. 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
yBoolean
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()
Si eres capaz, eres capaz de dejar un post acerca de qué te ha parecido este enunciado.