>source

데이터를 반복하여 생성하려고 합니다.

[
{
  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>

그러나 이것은 위에서 얻은 결과입니다.

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

저는 JS 코더가 아니므로 계속 배우려고 노력하지만 몇 가지 다른 예를 살펴보았지만 여전히 문제가 있습니다.

이 출력을 얻는 이유는 두 개의 독립적인 객체를 만들고 각각을 푸시하는 대신 동일한 라인 객체를 배열에 두 번 푸시하기 때문입니다. 여기서는 기술적으로 원형이 아니지만 이 출력이 의미하는 것은 이전에 어느 시점에서 이미 인쇄된 동일한 항목에 대한 참조라는 것입니다. 기본적으로 끝에 array[0]=== array[1]이 있습니다.

CherryDT2021-11-29 05:51:12

참조: JavaScript는 참조에 의한 전달 또는 값에 의한 전달 언어입니까?

CherryDT2021-11-29 05:51:12

나는 내가 달성하려는 것에 대한 배열을 만들 필요가 있다고 생각하지 않습니다.

ChrisYates2021-11-29 05:51:12

아니요, 맞습니다. 이름의 일부로 인덱스가 포함된 단순한 목록인 이상한 형식(아마도 웹 양식에서)으로 입력을 가져오기 때문에 배열이 필요합니다. 따라서 배열을 만드는 접근 방식은 그것은 당신 자신이 참으로 옳기 때문입니다. 문제는 단일 객체 라인을 생성하고 동일한 단일 객체를 배열에 두 번 푸시한다는 것입니다(중간에 값을 변경해도 객체의 복사본이 되지는 않습니다!). 각 반복에 대해 별도의 라인 객체를 생성해야 합니다.

CherryDT2021-11-29 05:51:12
  • 이전 1.5.2에서 2.0.3으로, Java 8에서 11로 스프링 부트 마이그레이션
  • 다음 c++ : OpenGL로 이미지 표시 문제