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