Javascript:正在消失的对象属性
我的问题是,我试图用数据数组填充对象,但有些数组设置不正确或消失了 我尝试过寻找答案,但没有找到任何答案,我也尝试过调试,但无法找到问题的根源 发生这种情况的函数是我一直在使用的自定义jQuery扩展,它将对象作为包含“hours”数组的输入:Javascript:正在消失的对象属性,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我的问题是,我试图用数据数组填充对象,但有些数组设置不正确或消失了 我尝试过寻找答案,但没有找到任何答案,我也尝试过调试,但无法找到问题的根源 发生这种情况的函数是我一直在使用的自定义jQuery扩展,它将对象作为包含“hours”数组的输入: Hour = { time: datetime, comment: string }; 代码如下: (function ( $ ) { $.fn.calendar = function(data){ var times={
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];
如果属性不存在,则会创建一个对象,如果属性存在,则不创建对象。我假设您有重复的
entry.getDay()
覆盖现有属性。就是这样。我在同一天有两个项目,但只有第一个出现。例如,不可能有不同的时间[2][1]和时间[2][2]条目吗?正确,不可能,否则您将如何引用其中一个?谢谢,这是我忽略的。现在看起来很傻,但我就是没看到。