JSON.Stringify перезаписывая данные

0

Кажется, что JSON.Stringify не работает с моими объектами. Мой код:

var LessonTimes={}, CurrentLesson={}, LessonTimeID=1;
$('.AddTimeSection').each(function(e){
    CurrentLesson['day']=$(this).find('.AddTimeDay').val();
    CurrentLesson['start']=$(this).find('.AddTimeStart').val();
    CurrentLesson['end']=$(this).find('.AddTimeEnd').val();
    CurrentLesson['notes']=$(this).find('.AddTimeNotes').val();
    CurrentLesson['id']=LessonTimeID;
    LessonTimes[LessonTimeID]=CurrentLesson;
    console.log(LessonTimes[LessonTimeID]);
    LessonTimeID+=1;
});
console.log(JSON.stringify(LessonTimes));

И выход моего JSON.stringify ниже. Как вы можете видеть, последний объект повторяется, но я не могу понять, почему, поскольку все отдельные объекты верны.

Object {day="Mon", start="15:00", end="16:00", id=1, ...}
Object {day="Tue", start="16:00", end="17:00", id=2, ...}
Object {day="Wed", start="17:00", end="18:00", id=3, ...}
JSON = {"1":{"day":"Wed","start":"17:00","end":"18:00","notes":"","id":3},"2":{"day":"Wed","start":"17:00","end":"18:00","notes":"","id":3},"3":{"day":"Wed","start":"17:00","end":"18:00","notes":"","id":3}}
Теги:
object

2 ответа

2
Лучший ответ

Это не проблема с JSON.

Вам нужно повторно назначить CurrentLesson={} на каждой итерации. В противном случае вы меняете один и тот же объект.

0

Это должно работать:

var LessonTimes = [];
$('.AddTimeSection').each(function(e){
    LessonTimes.push({
        day: $(this).find('.AddTimeDay').val(),
        start: $(this).find('.AddTimeStart').val(),
        end: $(this).find('.AddTimeEnd').val(),
        notes: $(this).find('.AddTimeNotes').val(),
        id: LessonTimes.length
    });
});
console.log(JSON.stringify(LessonTimes));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню