Ich habe unten eine Reihe von Daten und möchte sie in aufsteigender Reihenfolge sortieren. Ich habe versucht, aber nicht das positive Ergebnis zu bekommen.
var arr = [ [ '02/13/2015', 0.096 ],
[ '11/15/2013', 0.189 ],
[ '05/15/2014', 0.11 ],
[ '12/13/2013', 0.1285 ],
[ '01/15/2013', 0.12 ],
[ '01/15/2014', 0.11 ],
[ '02/14/2014', 0.11 ],
[ '03/14/2014', 0.11 ],
[ '01/15/2015', 0.096 ],
[ '07/15/2015', 0.096 ],
[ '04/15/2013', 0.12 ],
[ '04/15/2014', 0.11 ],
[ '05/15/2013', 0.12 ],
[ '06/14/2013', 0.12 ],
[ '06/16/2014', 0.11 ],
[ '07/15/2013', 0.12 ],
[ '07/15/2014', 0.11 ],
[ '03/16/2015', 0.096 ]]
Mein Code
arr.sort(function(a,b){
return new Date(a[0][0]) - new Date(b[0][0]);
});
1
Rakesh Kumar
14 Aug. 2015 im 10:08
3 Antworten
Beste Antwort
Sie nehmen das erste Zeichen in den Datumszeichenfolgen, konvertieren sie in Date
Instanzen und verwenden sie zum Vergleich.
Sie sollten die Datumszeichenfolgen jedoch so verwenden, wie sie sind, sie in Date
Instanzen konvertieren und vergleichen.
arr.sort(function (a, b) {
return new Date(a[0]) - new Date(b[0]);
});
Ausgabe
[ [ '01/15/2013', 0.12 ],
[ '04/15/2013', 0.12 ],
[ '05/15/2013', 0.12 ],
[ '06/14/2013', 0.12 ],
[ '07/15/2013', 0.12 ],
[ '11/15/2013', 0.189 ],
[ '12/13/2013', 0.1285 ],
[ '01/15/2014', 0.11 ],
[ '02/14/2014', 0.11 ],
[ '03/14/2014', 0.11 ],
[ '04/15/2014', 0.11 ],
[ '05/15/2014', 0.11 ],
[ '06/16/2014', 0.11 ],
[ '07/15/2014', 0.11 ],
[ '01/15/2015', 0.096 ],
[ '02/13/2015', 0.096 ],
[ '03/16/2015', 0.096 ],
[ '07/15/2015', 0.096 ] ]
7
thefourtheye
14 Aug. 2015 im 07:11
Wenn Sie nur nach Datum sortieren möchten, hilft dieser Code meiner Meinung nach:
arr.sort(function(a,b){return new Date(a[0]) - new Date(b[0]);});
0
Dedy Chaidir
14 Aug. 2015 im 07:22
Stark inspiriert von MDN Sortieren mit Karte. Dies ist wichtig für größere Datenmengen.
var arr = [
['02/13/2015', 0.096],
['11/15/2013', 0.189],
['05/15/2014', 0.11],
['12/13/2013', 0.1285],
['01/15/2013', 0.12],
['01/15/2014', 0.11],
['02/14/2014', 0.11],
['03/14/2014', 0.11],
['01/15/2015', 0.096],
['07/15/2015', 0.096],
['04/15/2013', 0.12],
['04/15/2014', 0.11],
['05/15/2013', 0.12],
['06/14/2013', 0.12],
['06/16/2014', 0.11],
['07/15/2013', 0.12],
['07/15/2014', 0.11],
['03/16/2015', 0.096]
];
// temporary array holds objects with position and sort-value
var mapped = arr.map(function (el, i) {
var d = el[0].split('/');
return { index: i, value: new Date(d[2], d[0] - 1, d[1]) };
})
// sorting the mapped array containing the reduced values
mapped.sort(function (a, b) {
return +(a.value > b.value) || +(a.value === b.value) - 1;
});
// container for the resulting order
var result = mapped.map(function (el) {
return arr[el.index];
});
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
1
Nina Scholz
14 Aug. 2015 im 08:53