jquery - 对日期进行排序并显示不重复的日期

标签 jquery parsing object

我的 javascript 代码中有这个:

function parsePerObject(data){
    // LOOP OBJECTS
    var content = "";
    $.each(data, function(key, value){ 
        content += "<li class='contentblock has-thumb'>";
        content += "<p><a href='/sessions/view/" + value.id + "'>" + value.name + "</p>";      
        content += "<p>" + value.starttime + " - " + value.endtime + "</p>";
        content += "<p>" + value.speaker + "</p>";             
    });

    $("#here").append(content);
}

我想循环数据。数据是一系列像这样的对象:

{
    "21114"
    {
        "id":"21114",
        "external_id":"",
        "sessiongroupid":"1844",
        "eventid":"5588",
        "order":"0",
        "name":"localStorage HTML5 Session",
        "description":"localstorage",
        "starttime":"2013-04-23 12:00:00",
        "endtime":"2013-04-23 13:30:00",
        "speaker":"",
        "location":"",
        "mapid":"0",
        "xpos":"0.000000",
        "ypos":"0.000000",
        "maptype":"plan",
        "imageurl":"",
        "presentation":"",
        "organizer":"0",
        "twitter":"",
        "allowAddToFavorites":"0",
        "allowAddToAgenda":"0",
        "votes":"0",
        "url":"",
        "venueid":"0"
    },
    "21116"
    {
        //etc
    },
    //etc
}

但是现在我想根据日期对数据进行排序。 有人知道我该怎么做吗?

最佳答案

技巧是将对象转换为数组,然后使用 JavaScript's excellent Array.sort method具有自定义比较功能。

http://jsfiddle.net/2BY5x/1/

function parsePerObject(data){
    // Turn the data object into an array
    var dataArray = [];
    $.each(data, function (key, value) {
        dataArray.push(value);
    });

    // Sort data by starttime
    dataArray.sort(function (a, b) {
        if (a.starttime > b.starttime) {
            return 1;
        }
        if (a.starttime < b.starttime) {
            return -1;
        }
        return 0;
    });

    // LOOP OBJECTS
    var content = "";
    $.each(dataArray, function(i, item){
        content += "<li class='contentblock has-thumb'>";
        content += "<p><a href='/sessions/view/" + item.id + "'>" + item.name + "</p>";      
        content += "<p>" + item.starttime + " - " + item.endtime + "</p>";
        content += "<p>" + item.speaker + "</p>";             
    });

    $("#here").append(content);

}

关于jquery - 对日期进行排序并显示不重复的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16105197/

相关文章:

c - XML 到 C 结构和 C 结构到 XML

python Mechanize 没有正确解析表单

javascript - 合并具有相同键的对象

javascript - 有没有办法显示所有新对象的属性?

javascript - Json 对象到 Div Html

javascript - 如何阻止 CSS 动画干扰 CSS 转换过渡?

php - 选择第一个选择选项后的 HTML 选择选项显示列表

asp.net-mvc - Asp.net MVC 中的 TimeSpan 和 "24:00"解析错误

jquery - 按钮在 1199 和 768px 之间停止工作

javascript - 如果所有复选框都被选中,则执行此操作,否则执行此操作(jQuery)