Javascript 如何在没有任何依赖项的情况下对html表中的日期列进行排序?

Javascript 如何在没有任何依赖项的情况下对html表中的日期列进行排序?,javascript,html,sorting,date,html-table,Javascript,Html,Sorting,Date,Html Table,我想按表中最新和最旧的日期对日期列进行排序 我已经尝试了下面的代码,但它不起作用。我不知道如何对表格进行排序,因为我对这个领域还不熟悉 我不知道你的约会是从哪里来的,但是假设你可以很容易地把它们做成一个数组;我认为一个自定义排序函数就可以做到这一点。当然,使用Date对象可能会得到更优雅的代码,但因为只有三个排序标准,我不认为过度设计有什么意义。这是我想出的代码: //测试用例日期数组 日期=[“2015年12月15日”、“2029年2月23日”、“2009年4月14日”、“2009年4月1

我想按表中最新和最旧的日期对日期列进行排序

我已经尝试了下面的代码,但它不起作用。我不知道如何对表格进行排序,因为我对这个领域还不熟悉


我不知道你的约会是从哪里来的,但是假设你可以很容易地把它们做成一个数组;我认为一个自定义排序函数就可以做到这一点。当然,使用Date对象可能会得到更优雅的代码,但因为只有三个排序标准,我不认为过度设计有什么意义。这是我想出的代码:

//测试用例日期数组
日期=[“2015年12月15日”、“2029年2月23日”、“2009年4月14日”、“2009年4月15日”、“2009年5月15日”、“2004年4月14日];
//自定义排序
让sortedDates=dates.sort((a,b)=>{//compare函数
const monthArray=['1月'、'2月'、'3月'、'4月'、'5月'、'6月'、'7月'、'8月'、'9月'、'10月'、'11月'、'12月'];//月指数
//分开a和b
a=a.拆分('-');
b=b.分割('-');
//比较年份
如果(编号(a[2])>编号(b[2]))
返回1;
if(数(a[2])<数(b[2]))
返回-1;
//比较月份
if(monthArray.indexOf(a[1])>monthArray.indexOf(b[1]))
返回1;
if(monthArray.indexOf(a[1])数字(b[0]))
返回1;
如果(数字(a[0])<数字(b[0]))
返回-1;
});
console.log(分类数据)

//返回[“2004年4月14日”、“2009年4月14日”、“2009年4月15日”、“2009年5月15日”、“2015年12月15日”、“2029年2月23日”]
您的数据最初来自哪里?它来自数据库还是静态数据库?@Jason它来自firebase实时数据库您可以在初始数据库查询中进行排序吗?我如何将firebase的日期存储到数组中?@Mary我对firebase没有任何经验。数据是否作为JSON对象发送出去?我更新了代码,说明如何检索数据。因为我也是新手,所以我不太确定。@Mary好的,我已经编辑了我的答案,告诉我sortedDates是否登录到你的控制台。好的,谢谢你的帮助。我将尝试实现你的代码。
function convertDate(d) {
        var p = d.split("/");
        return +(p[2] + p[1] + p[0]);
    }

    function sortByDate() {
        var tbody = document.querySelector("#example tbody");
        // get trs as array for ease of use
        var rows = [].slice.call(tbody.querySelectorAll("tr"));
        rows.sort(function(a, b) {
            return convertDate(a.cells[7].innerHTML) - convertDate(b.cells[7].innerHTML);
        });

        rows.forEach(function(v) {
            tbody.appendChild(v); // note that .appendChild() *moves* elements
        });
    }

    document.querySelector("button").addEventListener("click", sortByDate);

//retrieve data from firebase
 rootRef.on('child_added', function(childSnapshot) {
        rootRef = childSnapshot.val();
        var tr = document.createElement('tr');
        tr.appendChild(createCell(rootRef.date));
        table.appendChild(tr);
    });


    function createCell(text) {
        var td = document.createElement('td');
        td.appendChild(document.createTextNode(text));
        return td;
    }