我试图找到两个Date
数组之间的差异,然后将所有不同的日期分成另一个日期数组供以后使用。还有一些我想要它做的功能。有一个变量diffDates
。它应该是一个数组,因为它可以保存超过一个月的索引。在diffDates
的帮助下,我想填充selectDiffDates
。
请查看此代码,以便更好,更快,以及在此代码段中实现上述最后功能的任何想法。谢谢。 Link to fiddle
Array.prototype.diff = function(a) {
return this.filter(function(i) {
return (a.indexOf(i) < 0);
});
}
var monthIndex = [0,1,2,3,4,5,6,7,8,9,10,11];
var dMarked=[], dFiltered=[], selectDiffDates = [];
dMarked=["Thu Jan 01 2015 00:00:00 GMT+0500 (Pakistan Standard Time)",
"Thu Feb 05 2015 00:00:00 GMT+0500 (Pakistan Standard Time)",
"Thu Mar 05 2015 00:00:00 GMT+0500 (Pakistan Standard Time)",
"Thu Apr 02 2015 00:00:00 GMT+0500 (Pakistan Standard Time)",
"Thu Jun 04 2015 00:00:00 GMT+0500 (Pakistan Standard Time)",
"Thu Jan 01 2015 00:00:00 GMT+0500 (Pakistan Standard Time)"];
dFiltered=["Thu Jan 08 2015 00:00:00 GMT+0500 (Pakistan Standard Time)",
"Thu Feb 12 2015 00:00:00 GMT+0500 (Pakistan Standard Time)",
"Thu Mar 12 2015 00:00:00 GMT+0500 (Pakistan Standard Time)",
"Thu Apr 09 2015 00:00:00 GMT+0500 (Pakistan Standard Time)",
"Thu May 07 2015 00:00:00 GMT+0500 (Pakistan Standard Time)",
"Thu Jun 11 2015 00:00:00 GMT+0500 (Pakistan Standard Time)"];
var dMarkedMonths = [], dFilteredMonths = [];
for(var i=0; i<dMarked.length; i++){
dMarkedMonths.push( monthIndex[new Date(dMarked[i]).getMonth()]);
}
for(var i=0; i<dFiltered.length; i++){
dFilteredMonths.push( monthIndex[new Date(dFiltered[i]).getMonth()]);
}
console.log(dMarkedMonths);
console.log(dFilteredMonths);
var diffDates = dFilteredMonths.diff( dMarkedMonths );
console.log("Difference: "+diffDates);
for(var d=0; d<dFiltered.length; d++){
if(new Date(dFiltered[d]).getMonth() == diffDates){
selectDiffDates.push(dFiltered[d]);
}
}
console.log(selectDiffDates);
$("#console").html(selectDiffDates);
答案 0 :(得分:0)
diffDates
是一个数组,因此您不应该将数组与单个月进行比较...而应该检查diffDates
数组中是否存在月份:
for(var d=0; d<dFiltered.length; d++){
if(diffDates.indexOf(new Date(dFiltered[d]).getMonth())>-1){
selectDiffDates.push(dFiltered[d]);
}
}
在演奏部分:请查看更新的小提琴http://jsfiddle.net/q7rmr5uq/3/
您当前的逻辑不符合您的要求。目前,您正在挑选几个月并找到不同的月份,然后从您获得的月份开始重新制作日期。但是,这将跳过所有那些具有相同月份但不同日期或年份的日期。
更好的方法应该包括找出两个日期而不是两个月之间的差异。