axidos
axidos

Reputation: 327

Sort JSON data by Date/Time value

Hope someone could help with this small task. I have an array of text blocks that have a DateTime value assigned to them. I would like to publish those text blocks sorted by DateTime so that the latest updated item is always on top.

Here is the script:

function jsonCallBack(data) {
  var strRows = "";

  $.each(data.News, function(i, item) { 
    var htmlNewsBody = item["htmlNewsBody"];            
    var maxLength = 120
    var trimmedString = htmlNewsBody.substr(0, maxLength);

    trimmedString = trimmedString.substr( 0, Math.min( trimmedString.length, 
                                                       trimmedString.lastIndexOf(" ") ) );

    strRows += "<div id='nrNewsItem-" + i + "'>";
    strRows += "<h3>" + item["txtTitle"] + "</h3>";
    strRows += "<p>" + item["dtDateTime"] + "</p>";
    strRows += "<p>" + trimmedString + "...</p>";
    strRows += "</div>"
  });

  $("#printHere").html(strRows);
};

Also have a working jsFiddle with JSON data.

Upvotes: 1

Views: 837

Answers (1)

Aziz Saleh
Aziz Saleh

Reputation: 2707

You can add a custom compare method:

function compare(a,b) {
    if (a.dtDateTime < b.dtDateTime) {
        return 1;
    }
    if (a.dtDateTime > b.dtDateTime) {
        return -1;
    }
    return 0;
}

Then in your function:

function jsonCallBack(data) {
    data.News.sort(compare);
    ....

Upvotes: 1

Related Questions