簡體   English   中英

Javascript:消失的對象屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM