¿Cómo obtener un subconjunto de una matriz?
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]
.
Echa un vistazo aArray.slice(begin, end)
const ar = [1, 2, 3, 4, 5];
// slice from 1..3 - add 1 as the end index is not included
const ar2 = ar.slice(1, 3 + 1);
console.log(ar2);
Para un uso simple slice
, use mi extensión para Array Class:
Array.prototype.subarray = function(start, end) {
if (!end) { end = -1; }
return this.slice(start, this.length + 1 - (end * -1));
};
Entonces:
var bigArr = ["a", "b", "c", "fd", "ze"];
Prueba1 :
bigArr.subarray(1, -1);
< ["b", "c", "fd", "ze"]
Prueba2:
bigArr.subarray(2, -2);
< ["c", "fd"]
Prueba3:
bigArr.subarray(2);
< ["c", "fd","ze"]
Podría ser más fácil para los desarrolladores que vienen de otro idioma (es decir, Groovy).
const array_one = [11, 22, 33, 44, 55];
const start = 1;
const end = array_one.length - 1;
const array_2 = array_one.slice(start, end);
console.log(array_2);
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 ].
Solución exacta
function getSubarray(array, fromIndex, toIndex) {
return array.slice(fromIndex, toIndex+1);
}
Probemos la solución
let ar = [1, 2, 3, 4, 5]
getSubarray(ar, 1, 3)
// result: [2,3,4]
Array.prototype.slice()
El método slice() devuelve una copia superficial de una parte de una matriz en un nuevo objeto de matriz seleccionado de principio a fin (no incluido el final), donde el inicio y el final representan el índice de los elementos de esa matriz. La matriz original no se modificará.
Básicamente, el segmento le permite seleccionar un subarreglo de un arreglo.
Por ejemplo, tomemos esta matriz:
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
Haciendo esto:
console.log(animals.slice(2, 4));
Nos dará esta salida:
// result: ["camel", "duck"]
Sintaxis:
slice() // creates a shallow copy of the array
slice(start) // shows only starting point and returns all values after start index
slice(start, end) // slices from start index to end index
Ver referencia de copia superficial