Я пытаюсь найти разницу между двумя массивами Date
, а затем разделить все разные даты на другой массив дат для последующего использования. Также есть немного больше возможностей, которые я хочу сделать. Существует переменная diffDates
. Он должен быть массивом, потому что он может содержать индекс более одного месяца. С помощью этого diffDates
хочу заполнить selectDiffDates
.Найти разницу между двумя массивами дат в JavaScript
Просмотрите этот код, чтобы сделать его лучше и, возможно, быстрее и любые идеи по реализации вышеупомянутых последних функциональных возможностей в этом фрагменте кода. Благодарю. 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);
'diffDates' каждый элемент следует сравнивать с каждым элементом' dFiltered', это то, что делает вышеприведенный код? – LetMeCodeYou
Да, потому что diffDates - это массив месяцев. – Vijay
Любые советы, пожалуйста, за то, что этот код работает быстрее? Поскольку это станет частью беспорядочного и громоздкого кода :) – LetMeCodeYou