배열을 반복하면서 수정 된 형식의 다른 객체 배열을 만듭니다.할당 된 값을 유지하지 않는 객체
for (i = 1; i <= 37; i++) { // create 37 boxes for days of the month and nearby dates
room_reservations[i] = {};
var this_date = getDate();
var res_count = 0;
for (var res_index = 0; res_index < reservations.length; res_index++) {
var this_res = reservations[res_index];
// bad assignment location
// res_room = JSON.parse(JSON.stringify(this_res));
if (this_res.checkin <= this_date && this_res.checkout > this_date) {
for (var k = 0; k < this_res.rooms.length; k++) {
var res_room = {};
res_room = JSON.parse(JSON.stringify(this_res));
var this_room = res_room.rooms[k];
res_room.room_index = k;
var traveler_count = this_room.travelers.length;
console.log('traveler_count: ', traveler_count);
res_room.traveler_count = traveler_count;
//traveler_counts[i][res_room.room_name] = traveler_count;
console.log('res_room.traveler_count: ', res_room.traveler_count);
var room_name = this_room.room_name;
console.log('room_name: ', room_name);
res_room.room_name = room_name;
console.log('res_room: ', res_room);
room_reservations[i][res_room.room_name] = res_room;
}
}
}
}
본질적으로 나는 콘솔에 객체 속성 traveler_count를 기록하고 정확한 값을 얻습니다. 그러나 전체 개체를 기록 할 때 속성 값이 올바르지 않습니다. 마치 다음 루프에서 값을 가져 오는 것과 같습니다.
나는이 문제를 어떻게 해결합니까? 단지 로깅이 아닙니다. room_reservations 배열에 설정된 값이 잘못되었습니다. 예를 들어, 속성 이름을 res_room.room_name으로 설정하고 값을 res_room으로 설정합니다. 그러나 속성 이름이 객체의 값과 일치하지 않습니다.
이 도와주세요. Thx
'res_room'은 전역 변수 (줄'7') 인 것처럼 보입니다. 당신이 그것을 반복 할 때마다'var'을 사용하여 로컬로 만들 수 있습니까? – TheHansinator
그게 좋은 생각인데 동의하지만이 문제를 일으킬 수있는 방법을 모르겠습니다. 그는 변수를 수정할 수있는 외부 함수를 호출하지 않습니다. – Barmar
당신은 내부의 'for' 루프를 통해 매번 동일한'res_room' 객체를 사용하고 있습니다. – Pointy