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

129
Views
[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 answers
Answer question

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 Report

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 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!