다음 개체가 있습니다.
var dataset = [
[
{"value":"PRE","formattedValue":"PRE"},
{"value":"2017-06-15 00:00:00","formattedValue":"15/06/2017 0:00:00"},
{"value":"COSTA RICA","formattedValue":"COSTA RICA"},
{"value":"6.15","formattedValue":"6,150"}
],
[
{"value":"PRE","formattedValue":"PRE"},
{"value":"2017-06-15 00:00:00","formattedValue":"15/06/2017 0:00:00"},
{"value":"EL SALVADOR","formattedValue":"EL SALVADOR"}
]
]
너무 복잡하고 실제로 필요하지 않은 데이터가 있으므로 이것을 다음과 같이 바꾸려고했습니다.
[
{
"estado": "PRE",
"fecha": "2017-06-15 00:00:00",
"pais": "COSTA RICA",
"precio": "6.15",
}
]
마침내 해냈지만 내 코드가 왜 작동하는지 잘 모르겠습니다. 이 코드로 수행했습니다.
var datafinal = [];
function convertion(){
var dataobj = dataset.getData();
for(var x in dataobj){
datafinal[x] = { "estado": dataobj[x][0]["value"] };
datafinal[x]["fecha"] = dataobj[x][1]["value"];
datafinal[x]["pais"] = dataobj[x][2]["value"];
datafinal[x]["precio"] = dataobj[x][3]["value"];
}
}
주의를 기울이면 새 개체에 추가 한 첫 번째 값이 나머지 형식과는 다른 형식을 사용하여 추가되는 것을 볼 수 있습니다.
두 번째 형식으로 모든 값을 추가하면 아무것도 추가하지 않는다는 것을 발견했습니다. 그러나 첫 번째 형식으로 모든 것을 추가하면 마지막 값만 추가됩니다.
그래서 저는 베일을 첫 번째 형식으로 만들고 나머지는 두 번째 형식으로 만들었고 제대로 작동했습니다.
... 왜 왜 이런 일이 발생하는지 설명해 줄 수 있습니까?
이것은 처음 datafinal[x]
에는 아직 존재하지 않기 때문에 값을 제공해야합니다. 즉, 객체를 할당해야합니다. 그것이 첫 번째 과제가하는 일입니다. 다른 할당은 첫 번째 줄에서 할당 한 값 을 대체 하지 않기를 원하기 때문에 기존 값을 변경 합니다 .
다른 할당은 datafinal[x]
자신 에게 할당되지 않고 속성에 기록됩니다. 따라서 첫 번째 할당에서 할당 한 개체를 확장합니다.
실제로 첫 번째 할당은 두 부분으로 나눌 수 있습니다.
datafinal[x] = {};
datafinal[x].estado = dataobj[x][0].value;
... 이제 모든 속성 할당이 동일하게 보일 수 있습니다 (주의 : 이러한 리터럴 속성 이름에 대괄호 표기법이 필요하지 않습니다). 첫 번째 할당은 이제 값을 객체로 초기화하는 것입니다 (숫자, 문자열, 부울 ...이 아니라). 이러한 할당이 없으면 개체가 없으며 속성을 할당 할 수 없습니다.
하나의 객체 리터럴 할당으로 작성하면 이해하기 더 쉽게 만들 수 있습니다.
datafinal[x] = {
estado: dataobj[x][0].value,
fecha: dataobj[x][1].value,
pais: dataobj[x][2].value,
precio: dataobj[x][3].value
};
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다