我正在循环访问一个数组,以修改格式创建另一个对象数组。对象不维护分配的值
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