2016-12-08 5 views
1

Ist es möglich, das nachstehende JSON-Format anhand der Uhrzeit (2016-12-07T13: 00: 00) mithilfe von jQuery/Javascript neu anzuordnen.Sortieren von JSON-Daten basierend auf Datum und Uhrzeit

[ 
    { 
     "id":1, 
     "start":"2016-12-07T13:00:00", 
     "subject":"test1", 
    }, 
    { 
     "id":2, 
     "start":"2016-12-07T09:00:00", 
     "subject":"test2", 
    }, 
    { 
     "id":3, 
     "start":"2016-12-07T10:00:00", 
     "subject":"test3", 
    }, 
    { 
     "id":4, 
     "start":"2016-12-07T07:00:00", 
     "subject":"test4", 
    }, 
    { 
     "id":5, 
     "start":"2016-12-07T14:00:00", 
     "subject":"test5", 
    } 
] 

Antwort

4

Sie in einer Art Callback für die Eigenschaft nutzen könnten start, weil ISO 8601 Daten als Zeichenfolge sortierbar sind.

var array = [ 
 
    { id: 1, start: "2016-12-07T13:00:00", subject: "test1" }, 
 
    { id: 2, start: "2016-12-07T09:00:00", subject: "test2" }, 
 
    { id: 3, start: "2016-12-07T10:00:00", subject: "test3" }, 
 
    { id: 4, start: "2016-12-07T07:00:00", subject: "test4" }, 
 
    { id: 5, start: "2016-12-07T14:00:00", subject: "test5" } 
 
]; 
 

 
array.sort(function (a, b) { 
 
    return a.start.localeCompare(b.start); 
 
}); 
 

 
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

Wenn Sie externe Bibliothek Lodash Zum Beispiel können

https://lodash.com/

die json String-Variable zuweisen und

var sort = _.sortBy(variable_name, "start") 

Hoffnung versuchen, das hilft y ou.

0

Ja, Sie würden die JavaScript-Array-Sortiermethode (http://www.w3schools.com/jsref/jsref_sort.asp) verwenden.

Definieren Sie Ihr Array als Zuweisen einer Variablen und dann rufen Sie die Sortiermethode, Sie können die Sortiermethode eine Funktion übergeben, um die Details des Vergleichs durchzuführen.

var aryData = [{"id":1 
        ,"start":"2016-12-07T13:00:00" 
        ,"subject":"test1" 
        },{ 
        "id":2 
        ,"start":"2016-12-07T09:00:00" 
        ,"subject":"test2" 
        },{ 
        "id":3 
        ,"start":"2016-12-07T10:00:00" 
        ,"subject":"test3" 
        },{ 
        "id":4 
        ,"start":"2016-12-07T07:00:00" 
        ,"subject":"test4" 
        },{ 
        "id":5 
        ,"start":"2016-12-07T14:00:00" 
        ,"subject":"test5" 
        }]; 
    aryData.sort(function(a, b) { 
     var dtA = new Date(a['start']) 
      ,dtB = new Date(b['start']); 
     return (dtA.getTime() - dtB.getTime()); 
    }); 
0

Versuchen Sie dies vielleicht hilfreich,

var aryData =[ 
 
    { 
 
     "id":1, 
 
     "start":"2016-12-07T13:00:00", 
 
     "subject":"test1", 
 
    }, 
 
    { 
 
     "id":2, 
 
     "start":"2016-12-07T09:00:00", 
 
     "subject":"test2", 
 
    }, 
 
    { 
 
     "id":3, 
 
     "start":"2016-12-07T10:00:00", 
 
     "subject":"test3", 
 
    }, 
 
    { 
 
     "id":4, 
 
     "start":"2016-12-07T07:00:00", 
 
     "subject":"test4", 
 
    }, 
 
    { 
 
     "id":5, 
 
     "start":"2016-12-07T14:00:00", 
 
     "subject":"test5", 
 
    } 
 
]; 
 
    function comp(a, b) { 
 
     return new Date(a.start).getTime() - new Date(b.start).getTime(); 
 
    } 
 
    aryData.sort(comp); 
 

 
console.log(aryData);

0

//put to variable 
 
var db = [ 
 
    { 
 
     "id":1, 
 
     "start":"2016-12-07T13:00:00", 
 
     "subject":"test1", 
 
    }, 
 
    { 
 
     "id":2, 
 
     "start":"2016-12-07T09:00:00", 
 
     "subject":"test2", 
 
    }, 
 
    { 
 
     "id":3, 
 
     "start":"2016-12-07T10:00:00", 
 
     "subject":"test3", 
 
    }, 
 
    { 
 
     "id":4, 
 
     "start":"2016-12-07T07:00:00", 
 
     "subject":"test4", 
 
    }, 
 
    { 
 
     "id":5, 
 
     "start":"2016-12-07T14:00:00", 
 
     "subject":"test5", 
 
    } 
 
]; 
 

 
//use .sort() 
 
db.sort(
 
    function(a,b){ 
 
    
 
    //use new Date parse string to date type 
 
    //convert date to number use Date.parse() 
 
    //format function(a,b) { return a-b; } 
 
    
 
    return Date.parse(new Date(a.start)) - Date.parse(new Date(b.start)); 
 
    } 
 
); 
 
console.log(db)