Tengo var ar = [1, 2, 3, 4, 5]y quiero alguna función getSubarray(array, fromIndex, toIndex), ese resultado de la llamada getSubarray(ar, 1, 3)es una nueva matriz [2, 3, 4].
javascript
arrays
Sergey Metlov
fuente
fuente

Respuestas:
Echa un vistazo a
Array.slice(begin, end)fuente
arno ha sido modificado.console.log(ar);// -> [1, 2, 3, 4, 5]Para un uso simple de
slice, use mi extensión a Array Class:Luego:
Prueba1 :
<["b", "c", "fd", "ze"]
Test2:
<["c", "fd"]
Test3:
<["c", "fd", "ze"]
Podría ser más fácil para los desarrolladores que vienen de otro idioma (es decir, Groovy).
fuente
Array.prototype.containsaArray.prototype.includes.subarraymétodo ofrece resultados inesperados.bigArr.slice(1,-1)devuelve['b','c','fd'], lo que cabría esperar (el -1 elimina un elemento del final de la nueva matriz). PerobigArr.subarray(1,-1)devuelve lo mismo quebigArr.subarray(1), es decir todo desde la posición 1 hasta el final debigArr. También está obligando a los usuarios a dar siempre números negativos comoendparámetro. Cualquieraend >= -1da el mismo resultado que cuandoend === undefined. Por otro lado,bigArr.slice(1,3)regresa['b','c'], lo que nuevamente se espera.fuente
La pregunta en realidad es pedir una nueva matriz , por lo que creo que una mejor solución sería combinar la respuesta de Abdennour TOUMI con una función de clonación:
[ http://stackoverflow.com/questions/728360/most-elegant-way-to-clone-a-javascript-object]
fuente
Array.prototype.slicedevuelve una copia ya.Array.prototype.splicemodifica la matriz original.sliceya devuelve una copia superficial, haciendosubarrayinnecesaria esta implementación. Pero también vale la pena mencionar que ha parcheado un mono un objeto incorporado, que es un gran no-no. Ver los comentarios sobre la respuesta de Abdennour TOUMI .