[英]Javascript: disappearing object properties
我的問題是我試圖用數據數組填充對象,但某些數組設置不正確或消失。
我曾嘗試尋找答案,但未找到任何內容,也嘗試調試,但未能深入了解問題所在。
發生的功能是我一直在使用的自定義jQuery擴展,它將對象作為包含“小時”數組的輸入:
Hour = {
time: datetime,
comment: string
};
代碼如下:
(function ( $ ) {
$.fn.calendar = function(data){
var times={};
var debugging = {};
var x = 0;
data.hours.forEach(function(hour){
//Transform hours.time into 1-7 day of the week
//and 0-23 hour of the day
//Save comments and timestamp to times[day][hour];
var entry = new Date(hour.time);
var clockedTime = entry.toTimeString().match( /^([0-9]{2}:[0-9]{2}:[0-9]{2})/ )[0];
times[entry.getDay()] = {};
times[entry.getDay()][entry.getHours()] = [clockedTime, hour.comment];
debugging[x] = [entry.getDay(), entry.getHours()];
x++;
});
console.log(times);
console.log(debugging);
return this.html(times);
};
}(jQuery));
控制台輸出:
Object {1: Object, 2: Object, 3: Object, 4: Object}
Object {0: Array[2], 1: Array[2], 2: Array[2], 3: Array[2], 4: Array[2], 5: Array[2]}
因此,從輸出中,我知道它遍歷數據六次(因為調試對象包含六項),但是times對象只有四個條目。
任何幫助或指針將不勝感激。
當您具有重復的entry.getDay()
值時,您將覆蓋屬性。 嘗試以下方法:
times[entry.getDay()] = times[entry.getDay()] || {};
times[entry.getDay()][entry.getHours()] = [clockedTime, hour.comment];
如果該屬性不存在,則會創建一個對象,如果存在則將其保留。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.