Проверьте эти две строки
jsonData['timestamp'] = storeDate;
jsonData['duration'] = dict[storeDate];
jsonData['timestamp']
и jsonData['duration']
являются определенными парами ключ-значение, и вы перезаписываете их при каждой итерации. Затем, когда вы нажимаете на него в последней строке, он только толкает ссылку на объект, а не на реальный объект. console.log
происходит не так синхронно, как хотелось бы, поэтому иногда, когда он фактически регистрируется, он показывает только обновленный объект. Вы могли бы сделать что-то вроде этого:
jsonData[p] = {};
jsonData[p].timestamp = storeDate;
jsonData[p].duration = dict[storeDate];
Другой вариант - сделать jsonData
массивом, в который вы помещаете объект {timestamp, duration}
или [timestamp, duration]
.
Кроме того, вы можете повернуть эти две линии
var dArr = [year, month, p+1];
var storeDate = dArr.join("-");
в одну строку с использованием строки шаблона
var storeDate = `${year}-${month}-{p+1}`;