Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

136
Vistas
¿Cómo hacer coincidir la estructura de una matriz?

Tengo dos matrices que siempre tendrán la misma cantidad de elementos dentro de ellas.

 var array1 = [["John","Barry","Anne"],["Greg"],["Tom"],["Roy","Rye"]] var array2 = ["Banana","Orange","Apple","Grape","Pineapple","Raspberry","Pear"]

Quiero que array2 tenga la misma estructura de matriz que array1 , por lo que debería verse así:

 var newArray = [["Banana","Orange","Apple"],["Grape"],["Pineapple"],["Raspberry","Pear"]]

Intenté usar la length de array1 para crear primero una new array de la length correcta y luego recorrer esa array para crear las nested arrays con la length correcta. Luego, usando un for loop , empujando array2's element a esta new array , pero tengo problemas para descubrir cómo hacerlo.

 var array = new Array(array1.length) var arrayLength = array1.map(x => x.length) for (var i = 0; i < array.length; i++) { array[i] = new Array(arrayLength[i]); } for (var k = 0; k < array.length; k++) { for (var j = 0; j < array[k].length; j++) { array[0][k].push(array2[j]) } }

¡Gracias por cualquier ayuda!

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Puede usar .map() y .splice() para obtener el resultado esperado.
Si no se permite cambiar array2 , necesitamos una copia -> .slice()

 const array1 = [["John", "Barry", "Anne"], ["Greg"], ["Tom"], ["Roy", "Rye"]]; const array2 = ["Banana", "Orange", "Apple", "Grape", "Pineapple", "Raspberry","Pear"]; // if array2 can be modified, then this is not necessary // and you have to replace <clone> with <array2> in the block below const clone = array2.slice(); const newArray = array1.map(inner => { return clone.splice(0, inner.length); }); console.log(newArray);


Respuesta para la primera versión de la pregunta.

Solo necesitas .map() (dos veces) y un poco de matemática para esto.

 const array1 = [ [1, 2, 3], [4], [5], [6, 7] ]; const array2 = ["Banana", "Orange", "Apple", "Grape", "Pineapple", "Raspberry", "Pear"]; const newArray = array1.map(inner => { return inner.map(n => { return array2[n - 1]; }) }); console.log(newArray);

(se puede escribir como una sola línea, pero para facilitar la lectura he usado un return explícito)

about 4 years ago · Juan Pablo Isaza Denunciar

0

 const array1 = [["John", "Barry", "Anne"], ["Greg"], ["Tom"], ["Roy", "Rye"]]; const array2 = ["Banana", "Orange", "Apple", "Grape", "Pineapple", "Raspberry","Pear"]; let indexTracker=0; const newArr = array1.map(nameArr => nameArr.map(_ => array2[indexTracker++])); console.log(newArr);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Utilice Array.map() y Array.slice() para obtener el resultado final.

 const array1 = [[1, 2, 3], [4], [5], [6, 7]] const array2 = ["Banana", "Orange", "Apple", "Grape", "Pineapple", "Raspberry", "Pear"] let index = 0; const finalArray = array1.map((itemList) => { const list = array2.slice(index, index + itemList.length); index += itemList.length; return list; }); console.log(finalArray);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda