Javascript 如何将数组变量合并到对象数组变量中?
我有一个var对象,可以在日历上显示事件 这是var的一个示例:Javascript 如何将数组变量合并到对象数组变量中?,javascript,jquery,Javascript,Jquery,我有一个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<
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 = { 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>')};
var myEvents={recurring2+('10-02-2013':'Event1','10-04-2013':'Event2','12-25-2013':'圣诞节','12-31-2013':'除夕');
但是是的…我想我是个傻瓜。使用javascript移动我的第一步,即使经过长时间的研究,我也无法理解如何将数组变量合并到需要提取的对象变量中。
如何实现这一点?请注意,对象的键必须是唯一的(因此,如果在同一日期有两个事件,则第二个事件将覆盖第一个事件),您可以执行以下操作: 代替(或补充):
var output=mm+'-'+dd+'-'+yyyy+':“+”网站更新“;
做:
myEvents[mm+'-'+dd+'-'+yyyy]=“网站更新”;
myEvents变量应包含一个对象,其中日期为键,事件为值
PS:如果需要使用循环数组,则可以执行一些字符串拆分(在原始版本上):
for(var i=0;i您可以这样做
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);
var-day=4;
变量日期=新日期();
var nextYear=date.getFullYear()+1;
var recurtive={};//使循环作为新对象而不是新数组。
while(date.getDay()!=天){
date.setDate(date.getDate()+1)
}
while(date.getFullYear()
您是否尝试过$.grep()
?$.grep只返回了两个变量,但据我所知,其中一个作为数组,另一个作为对象。我没有将myEvents作为对象添加到重复出现的内容中。我明白了。这只是一个偶然的发现。非常感谢Tibos。不幸的是,当应用于我的代码时,它只返回原始myEvents变量。这可能是一个格式问题吗在trhe recurtive var loop上?通过一个简单的5秒调试,我可以注意到问题在于,在代码尝试构建循环数组后,循环数组是空的。这里的代码与原始版本之间的区别在于,在第一个版本中,您使用推送
正确地向数组添加项,然后在第二个版本中添加属性好像它是一个地图(对象),因此在使用for
进行迭代时,它们不会出现。谢谢Ghanshyam。我在$.extend行上得到一个$is not defined错误?与Tibos answer一样,我只得到myEvents输出,而循环不会被合并。我会在jsbin上向您显示,但您的代码返回一个$not defined错误-实际上我刚刚替换了recurrentical['mm+'-'+dd+'-'+yyyy+']
与重复出现的[mm+'-'+dd+'-'+yyyy]
一起工作,效果非常好。感谢我将接受的此解决方案。
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>')};
var output = mm + '-' + dd + '-' + yyyy + ' : ' + '<span>Website Update</span>';
myEvents[mm + '-' + dd + '-' + yyyy] = '<span>Website Update</span>';
for (var i=0; i<recurring.length; i++) {
var split = recurring[i].split(' : ');
myEvents[split[0]] = split[1];
}
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);