Ich muss ein Array von Daten im Format DD-MMMM-YYYY in aufsteigender Reihenfolge & absteigend Array durch eine Javascript-Funktion & Assert dieses Ergebnis mit einem statischen definierten Array . Ich habe versucht, Unten ist der Code aber scheint, wie seine teilweise Arbeits:Sortierung Daten Array in Asc & Desc Reihenfolge teilweise falsche Logik-Winkelmesser
it("Sorting DD-MMMM-YYYY Arrays",function(){
var unsorted_array1=['25-Nov-2005','04-Aug-2015','04-Aug-2015','30-Jun-2006','26-Jun-2013','27-Jun-2013','15-Feb-2001','10-Jul-2012','29-May-2012'];
var unsorted_array2=['25-Nov-2005','04-Aug-2015','04-Aug-2015','30-Jun-2006','26-Jun-2013','27-Jun-2013','15-Feb-2001','10-Jul-2012','29-May-2012'];
var arraytobecompared_desc=['04-Aug-2015','04-Aug-2015','27-Jun-2013','26-Jun-2013','10-Jul-2012','29-May-2012','30-Jun-2006','25-Nov-2005','15-Feb-2001'];
var arraytobecompared_asc=['15-Feb-2001','25-Nov-2005','30-Jun-2006','29-May-2012','10-Jul-2012','26-Jun-2013','27-Jun-2013','04-Aug-2015','04-Aug-2015'];
var sorted_with_function_ascending= unsorted_array1.sort(function(a, b){
var aa = a.split('-').reverse().join(),
bb = b.split('-').reverse().join();
return aa < bb ? -1 : (aa > bb ? 1 : 0);
});
var sorted_with_function_descending= unsorted_array2.sort(function(a, b){
a = a.split('-');
b = b.split('-');
return b[2] - a[2] || b[1] - a[1] || b[0] - b[0];
});
console.log("Ascending dates- "+sorted_with_function_ascending);
console.log("Descending dates- "+sorted_with_function_descending);
expect(arraytobecompared_desc).toEqual(sorted_with_function_descending);
expect(arraytobecompared_asc).toEqual(sorted_with_function_ascending);
})
sowohl die aufsteigende & absteige Funktionen sind die Werte dazwischen Art falsche Rückkehr, die das erwarten Block verursacht zu scheitern.
Das liegt wahrscheinlich daran, dass "Aug" alphabetisch vor "Jun" steht. Sie sollten Monatszahlen anstelle von Namen verwenden –
Ich kann das Datumsformat nicht ändern. Können Sie Änderungen an der Funktion selbst vorschlagen? –
Ja, siehe meine Antwort unten. –