Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数组变量合并到对象数组变量中?_Javascript_Jquery - Fatal编程技术网

Javascript 如何将数组变量合并到对象数组变量中?

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对象,可以在日历上显示事件

这是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 = { 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);