Listado completo de tutoriales

Array: método slice


El método slice (traducido al castellano: trozo) retorna un trozo del vector. La sintaxis es:

 vec.slice(2,4);

El primer parámetro indica a partir de que elementos debe retornar y el segundo parámetro hasta cual elemento (sin incluir dicha posición)
El método slice no modifica el vector original, sino que retorna otro vector con las componentes indicadas.

Veamos con un ejemplo el empleo del método slice:

<!DOCTYPE html>
<html>
<head>
  <title>Ejemplo de JavaScript</title>
  <meta charset="UTF-8">
</head>
<body>

<script>
  var vec=[10,20,30,40,50,60];
  document.write('Vector original<br>');
  var f;
  for(f=0;f<vec.length;f++)
  {
    document.write(vec[f]+'-');
  }
  document.write('<br>');
  var vec2=vec.slice(1,4);
  document.write('Vector resultante de la llamada a slice<br>');
  for(f=0;f<vec2.length;f++)
  {
    document.write(vec2[f]+'-');
  }
</script>
  
</body>
</html>

Estamos indicando en el método slice que retorne un nuevo vector a partir del elemento de la posición 1 hasta la posición 4 sin incluirla. El vector original (es decir vec) no se modifica con la llamada al método slice. El resultado de la ejecución de este programa es:

Vector original
10-20-30-40-50-60-
Vector resultante de la llamada a slice
20-30-40-

Otras variantes que podemos emplear con el método slice:

  • Si queremos extraer desde una determinada posición hasta el final del vector debemos llamar al método slice con un solo parámetro:
       var vec=[10,20,30,40,50,60];
       var vec2=vec.slice(2); // vec2 almacena [30,40,50,60]
    
  • Si queremos indicar una posición pero comenzando desde el final del vector debemos indicar un valor negativo en el primer parámetro:
      var vec=[10,20,30,40,50,60];
      var vec2=vec.slice(-2); // vec2 almacena [50,60]
    
    También podemos indicar el segundo parámetro:
      var vec=[10,20,30,40,50,60];
      var vec2=vec.slice(-3,-1); // vec2 almacena [40,50]  
    
  • Por último podemos indicar el primer parámetro un valor positivo y el segundo un valor negativo indicando una posición desde el final
      var vec=[10,20,30,40,50,60];
      var vec2=vec.slice(1,-1); // vec2 almacena [20,30,40,50]
    

Retornar