我有一个var对象,可以在日历上显示事件。
这是var的一个例子:
var myEvents = {'10-02-2013' : '<span>Event1</span>','10-04-2013' : '<span>Event2</span>','12-25-2013' : '<span>Christmas Day</span>','12-31-2013' : '<span>New Year\'s Eve</span>'};
Var myEvents输出为
对象{10-02-2013:“Event1”,10-04-2013:“Event2”,12-25-2013:“圣诞节”,2013年3月12日:“新年前夜” }
由于我也有相同类型的重复事件,我会像这样动态创建它们:
var day = 4;
var date = new Date();
var nextYear = date.getFullYear() + 1;
var recurring = [];
while(date.getDay() != day)
{
date.setDate(date.getDate() + 1)
}
while(date.getFullYear() < nextYear)
{
var yyyy = date.getFullYear();
var mm = (date.getMonth() + 1);
mm = (mm < 10) ? '0' + mm : mm;
var dd = date.getDate();
dd = (dd < 10) ? '0' + dd : dd;
var output = mm + '-' + dd + '-' + yyyy + ' : ' + '<span>Website Update</span>';
recurring.push(output);
date.setDate(date.getDate() + 7);
}
var recurring outputs as
[“2013年10月10日:网站更新”,“10-10-2013:网站更新”,“2013年10月17日:网站更新”,“10-24-2013:网站更新” ,“10-31-2013:网站更新”,“11-07-2013:网站更新”,“2013年11月14日:网站更新”,“2013年11月21日:网站更新”,“11-28- 2013:网站更新“,”12-05-2013:网站更新“,”12-12-2013:网站更新“,”2013年12月19日:网站更新“,”2013年12月26日:网站更新“]
我需要将重复合并到myEvents中,这样当我拉出myEvents时我得到了
对象{10-02-2013:“Event1”,10-04-2013:“Event2”,12-25-2013:“圣诞节”,2013年3月12日:“新年前夜” ,10-03-2013:“网站更新”,10-10-2013:“网站更新”,2013年10月17日:“网站更新”,2013年10月24日:“网站更新”,2013年10月31日:“网站更新”,11-07-2013:“网站更新”,2013年11月14日:“网站更新”,2013年11月21日:“网站更新”,2013年11月28日:“网站更新”, 12-05-2013:“网站更新”,2013年12月12日:“网站更新”,2013年12月19日:“网站更新”,2013年12月26日:“网站更新”}
我以为我可以使用
重复出现一个字符串var recurring2 = recurring.join();
然后将其传递给myEvents,如
var myEvents = { recurring2 + ('10-02-2013' : '<span>Event1</span>','10-04-2013' : '<span>Event2</span>','12-25-2013' : '<span>Christmas Day</span>','12-31-2013' : '<span>New Year\'s Eve</span>')};
但是,是的......我猜我是个傻瓜。使用javascript移动我的第一步,即使经过长时间的研究,我也无法理解如何将该数组var合并到我需要提取的对象var中。
我怎样才能做到这一点?
答案 0 :(得分:0)
注意对象的键必须是唯一的(所以如果你在同一个日期有两个事件,第二个将覆盖第一个),你可以这样做:
代替(或除此之外):
var output = mm + '-' + dd + '-' + yyyy + ' : ' + '<span>Website Update</span>';
执行:
myEvents[mm + '-' + dd + '-' + yyyy] = '<span>Website Update</span>';
myEvents变量应该包含一个对象,其中日期为键,事件为值。
PS:如果你需要使用重复数组,那么你可以进行一些字符串拆分(在原始版本上):
for (var i=0; i<recurring.length; i++) {
var split = recurring[i].split(' : ');
myEvents[split[0]] = split[1];
}
答案 1 :(得分:0)
你可以做这样的事情
var day = 4;
var date = new Date();
var nextYear = date.getFullYear() + 1;
var recurring = {}; // Make recurring as new object instead of new Array.
while(date.getDay() != day) {
date.setDate(date.getDate() + 1)
}
while(date.getFullYear() < nextYear) {
var yyyy = date.getFullYear();
var mm = (date.getMonth() + 1);
mm = (mm < 10) ? '0' + mm : mm;
var dd = date.getDate();
dd = (dd < 10) ? '0' + dd : dd;
// Assign as a property of the object instead of an array.
recurring['mm + '-' + dd + '-' + yyyy + '] = '<span>Website Update</span>';
date.setDate(date.getDate() + 7);
}
var myEvents = {'10-02-2013' : '<span>Event1</span>','10-04-2013' : '<span>Event2</span>','12-25-2013' : '<span>Christmas Day</span>','12-31-2013' : '<span>New Year\'s Eve</span>'};
//Finally merge two objects. so you can get one overall object as expected.
finalObject = $.extend({}, myEvents, recurring);