Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

141
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!