¿Cómo creo un subarreglo a partir de un arreglo existente en Javascript?
Por ejemplo;
Arr = [5,2,1,2]Luego quiero insertar 8 en la posición 1 de Arr, pero mantener el valor original 2. Entonces arr puede convertirse en:
Arr = [5,[2,8],1,2]Intenté usar concat, que hizo algo pero duplica todos los valores.
Tenga en cuenta que esto puede crecer, por ejemplo Arr = [5,[2,8,3,4],1,[2,3]]
¡Gracias!
Podrías asignar los valores concatenados.
const addAt = (array, value, index) => array[index] = [].concat(array[index], value), array = [5, 2, 1, 2]; addAt(array, 8, 1); console.log(array) addAt(array, 3, 1); console.log(array) .as-console-wrapper { max-height: 100% !important; top: 0; }Hay varias formas diferentes de hacer esto, pero puede reasignar el índice de matriz actual a una matriz de esta manera:
Arr[1] = [Arr[1], 8] . Luego, si desea continuar agregando a la matriz en el índice 1 en Arr, podría hacer algo como Arr[1].push(x) .
Podrías hacer algo como esto (Probablemente no sea la mejor respuesta, pero puede ser útil)
const addIntoArray = (arr, toAdd, index) => { arr[index] = typeof arr[index] == "number" ? [arr[index], toAdd] : [...arr[index], toAdd]; return arr } Arr = [5,2,1,2] console.log(Arr); // [ 5, 2, 1, 2 ] addIntoArray(Arr, 1, 1) console.log(Arr); // [ 5, [ 2, 1 ], 1, 2 ] addIntoArray(Arr, 3, 1) console.log(Arr) // [ 5, [ 2, 1, 3 ], 1, 2 ] Básicamente ...arr expande la matriz y luego agregamos toAdd al final y [arr[index], toAdd] crea una matriz con el primer elemento como el número y el segundo como el nuevo elemento. (Modifica la matriz original, como se muestra en el ejemplo, así que preste atención, ya que puede generar errores)
El typeof arr[index] == "number" es solo una verificación de tipo simple/genérica para ver si aún no hay una matriz