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

191
Vistas
Cómo hacer un bucle en una matriz anidada por Inside Array en una solución dinámica

Tengo problemas con mi código porque creo que no es flexible si se inserta una nueva matriz en mi matriz anidada, no consideraré la nueva matriz. Lo importante es cómo accedo al primer elemento, luego al segundo y así sucesivamente a la vez de cada arreglo.

Aquí hay un ejemplo:

 const nestedArr = [ [ "COCA - COLA ORIGINAL 355 ML VIDRIO RET", "COCA - COLA ORIGINAL 600 ML PET NR", "COCA - COLA ORIGINAL 2.5 LT RET"], [ "$176.02", "$100.00", "$130.00" ], [ "10", "3", "15" ] ] const ordersObj = [] for (let i=0; i< nestedArr[0].length; i++){ var name = orderArr[0][i]; var price = Number(orderArr[1][i].replace("$","")); var qty = orderArr[2][i]; var amount = price * qty; ordersObj.push({name,price,qty,amount}) }

Lo que me gustaría hacer es evitar poner 0,1,2 para establecer la posición de la matriz anidada a la que quiero acceder, quiero ejecutar un ciclo o cambiar mi código para que 0,1,2 no estén codificados .

Saludos

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

0

Parece que tu código es un poco desordenado, supongo:

 const nestedArr = [ [ "COCA - COLA ORIGINAL 355 ML VIDRIO RET", "COCA - COLA ORIGINAL 600 ML PET NR", "COCA - COLA ORIGINAL 2.5 LT RET"], [ "$176.02", "$100.00", "$130.00" ], [ "10", "3", "15" ] ] const ordersObj = [] for (let i=0; i< nestedArr[0].length; i++){ // This has no value yet // var name = orderArr[0][i]; // this should be var name = nestedArr[0][i] var price = Number(nestedArr[1][i].replace("$","")); var qty = nestedArr[2][i]; var amount = price * qty; ordersObj.push({name,price,qty,amount}) }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Recomendaría no tratar de hacerlo todo en un ciclo, sino más bien definir una función constructora para su objeto y asignar la fuente nestedArr a una matriz 2D más utilizable con cada propiedad en su índice dado en las sub-matrices (aquí usando un función zip de la utilidad, veaesta pregunta para la discusión).

 const nestedArr = [ ['COCA - COLA ORIGINAL 355 ML VIDRIO RET', 'COCA - COLA ORIGINAL 600 ML PET NR', 'COCA - COLA ORIGINAL 2.5 LT RET'], ['$176.02', '$100.00', '$130.00'], ['10', '3', '15'], ]; const OrderObj = ([name, price, qty]) => { const _price = Number(price.replace('$', '')); const _qty = Number(qty); return { name, price: _price, qty: _qty, amount: _price * _qty, }; }; const zip = (...rows) => [...rows[0]].map((_, i) => rows.map((row) => row[i])); const orderObjs = zip(...nestedArr).map(OrderObj); console.log(orderObjs); // console.log(zip(...nestedArr)); /* [ [ 'COCA - COLA ORIGINAL 355 ML VIDRIO RET', '$176.02', '10' ], [ 'COCA - COLA ORIGINAL 600 ML PET NR', '$100.00', '3' ], [ 'COCA - COLA ORIGINAL 2.5 LT RET', '$130.00', '15' ] ] */

Agregar más filas a nestedArr simplemente requiere ajustar su constructor para tener en cuenta las nuevas filas con los parámetros desestructurados que sirven como leyenda para las filas en nestedArr .

 const nestedArr = [ ['COCA - COLA ORIGINAL', 'COCA - COLA ORIGINAL', 'COCA - COLA ORIGINAL'], ['$176.02', '$100.00', '$130.00'], ['355 ML VIDRIO RET', '600 ML PET NR', '2.5 LT RET'], // <─── added row ['10', '3', '15'], ]; // ┌───────────────────────────── added index const OrderObj = ([name, price, size, qty]) => { const _price = Number(price.replace('$', '')); const _qty = Number(qty); return { name, size, // <───────────────────────────────────────────────── added property price: _price, qty: _qty, amount: _price * _qty, }; }; const zip = (...rows) => [...rows[0]].map((_, i) => rows.map((row) => row[i])); const orderObjs = zip(...nestedArr).map(OrderObj); console.log(orderObjs);

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