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

131
Vistas
[circular object Object]] in for loop javascript

I'm trying to loop through the data and get it to produce

[
{
  odds: "2/3",
  position: 1,
  terms: "1/5"
},
{
  odds: "4/1",
  position: 1,
  terms: "1/7"
}
]
<script>
    var res = '{"count":"2","bettype":"double","position[0]":"1","oddsa[0]":"2","oddsb[0]":"3","placeodds[0]":"1/5","position[1]":"1","oddsa[1]":"4","oddsb[1]":"6","placeodds[1]":"1/7"}';

var line = {};
//
var getvals = JSON.parse(res);
var count = parseInt(getvals["count"]);

var i = 0;
const array = [];//new Array();
for(var i = 0;i < count;i++)
{
line["odds"] = getvals["oddsa["+i+"]"]+'/'+getvals["oddsb["+i+"]"];
line["terms"] = getvals["placeodds["+i+"]"];
line["position"] = getvals["position["+i+"]"];
array.push(line);
}
console.log(array);
  </script>

However this is the result I get from the above

[{
  odds: "4/6",
  position: "1",
  terms: "1/7"
}, [circular object Object]]

I'm not a JS coder so trying to learn as I go however I've looked at a few other examples but I'm still having issues

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

0

You need to create a new line object every iteration of the loop. Otherwise you are modifying and pushing the same object reference over and over to the array

var res = '{"count":"2","bettype":"double","position[0]":"1","oddsa[0]":"2","oddsb[0]":"3","placeodds[0]":"1/5","position[1]":"1","oddsa[1]":"4","oddsb[1]":"6","placeodds[1]":"1/7"}';


//
var getvals = JSON.parse(res);
var count = parseInt(getvals["count"]);

var i = 0;
const array = []; //new Array();
for (var i = 0; i < count; i++) {
  // create new object here
  var line = {};
  line["odds"] = getvals["oddsa[" + i + "]"] + '/' + getvals["oddsb[" + i + "]"];
  line["terms"] = getvals["placeodds[" + i + "]"];
  line["position"] = getvals["position[" + i + "]"];
  array.push(line);
}
console.log(array);

about 4 years ago · Juan Pablo Isaza Denunciar

0

In the second "what do you want" object you don't get 4/1 with the logic you used because oddssa[1] is 4 and oddsb[1] is 6 so you'll get 4/6

The logic itself looks promising keep it up! But as soon as I specified an object inside loop I got the result you specified.

I also cleaned up, and added the template literals (backticks) so you wouldn't be so confused with the pluses to concat the strings, added a proper variable declaration (instead of var, use const/let standard) and changed to calling property getvals.count because I would only use the form getvals[string] if the property name is actually a number or dash.

const res = '{"count":"2","bettype":"double","position[0]":"1","oddsa[0]":"2","oddsb[0]":"3","placeodds[0]":"1/5","position[1]":"1","oddsa[1]":"4","oddsb[1]":"6","placeodds[1]":"1/7"}';

const getvals = JSON.parse(res);

const count = parseInt(getvals.count);

const arr = [];

for(let i = 0;i < count;i++) {
  const line = {
    odds: getvals[`oddsa[${i}]`] + "/" + getvals[`oddsb[${i}]`],
    terms: getvals[`placeodds[${i}]`],
    position: getvals[`position[${i}]`]
  }
  arr.push(line)
}

console.log(arr)
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