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

262
Vistas
Crear una matriz de objetos en foreach

Estoy luchando para crear una matriz de objetos a partir de dos grupos de entrada, cada grupo tiene 3 entradas con lado de datos = izquierda/derecha, cada entrada tiene clase "olmo" y pos de datos = a/b/c

 <input class="elm-left elm" name="l1" data-pos="a" data-side="left"/> <input class="elm-left elm" name="l2" data-pos="b" data-side="left"/> <input class="elm-left elm" name="l3" data-pos="c" data-side="left"/> <input class="elm-right elm" name="r1" data-pos="a" data-side="right"/> <input class="elm-right elm" name="r2" data-pos="b" data-side="right"/> <input class="elm-right elm" name="r3" data-pos="c" data-side="right"/>

salida deseada es:

 [ { "name":"title1", "data":[ { "left" :{"A":10,"B":10,"C":10}, "right":{"A":20,"B":20,"C":20} } ] } ]

mi salida es:

 ...,"data":[ { "left":{"A":20,"B":20,"C":20}, "right":{"A":20,"B":20,"C":20} } ]
 var sides = {}; var info = {}; $(".elm").each(function () { var pos = $(this).data('pos').toUpperCase(); //a,b,c var side = $(this).data('side'); //left, right var val = $(this).val(); info[[pos]] = val; sides[side] = info; }); data.push(sides);
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debe inicializar un nuevo objeto para info[side] antes de poder usar info[side][pos]

 info[side] = info[side] || {}

este es un patrón común para usar el valor existente si hay uno o crear uno nuevo si es necesario.

Luego puede usar este objeto directamente sin la necesidad de la variable de info que se estaba reutilizando para diferentes conjuntos de valores.

 var sides = {}; $(".elm").each(function () { var pos = $(this).data('pos').toUpperCase(); //a,b,c var side = $(this).data('side'); //left, right var val = $(this).val(); sides[side] = sides[side] || {}; sides[side][pos] = val; }); var output = { name: "title1", data: [] }; output.data.push(sides); console.log(JSON.stringify(output))
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input class="elm-left elm" name="l1" data-pos="a" data-side="left" value="20"/> <input class="elm-left elm" name="l2" data-pos="b" data-side="left" value="20"/> <input class="elm-left elm" name="l3" data-pos="c" data-side="left" value="20"/> <input class="elm-right elm" name="r1" data-pos="a" data-side="right" value="20"/> <input class="elm-right elm" name="r2" data-pos="b" data-side="right" value="20"/> <input class="elm-right elm" name="r3" data-pos="c" data-side="right" value="20"/>

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