Javascript:将包含日期的数组按降序排序

标签 javascript arrays sorting

我有以下数组:

var times = [
            ["04/11/10", "86kg"], 
            ["05/12/11", "90kg"],
            ["06/12/11", "89kg"]
];

我想按升序列出这些日期及其相应的权重。

我知道您可以使用 sort 对数组进行排序,我从 this About.com page 中找到了以下函数我认为这会做我想做的事:

times.sort(dmyOrdA);
var dateRE = /^(\d{2})[\/\-](\d{2})[\/\-](\d{2})/;
function dmyOrdA(a,b) {
    a = a.replace(dateRE, "$3$2$1");
    b = b.replace(dateRE, "$3$2$1");

    if (a > b) {
        return 1;
    }

    else if (a < b) {
        return -1;
    }

    else {
        return 0;
    }
}

但是,使用这个函数会出现以下错误:

a.replace is not a function

有人能帮我解答一下吗?

提前致谢。

编辑:

查看之前的 stack overflow question在我的例子中,'a' 似乎不是字符串。但是,我不明白为什么会这样。

最佳答案

对数组进行排序时,sort函数的参数是数组元素。
在你的例子中,你的数组元素也是数组……真可惜。
您想按每个元素的第一个元素对数组的数组进行排序(棘手)。
所以只需将 ab 更改为 a[0]b[0] :

function dmyOrdA(a,b) {
    a = a[0].replace(dateRE, "$3$2$1");
    b = b[0].replace(dateRE, "$3$2$1");
    if (a > b)
        return 1;
    else if (a < b)
        return -1;
    else
        return 0;
}

你得到了 a.replace is not a function 因为 replace 是一个 String 方法并且你试图将它应用到一个 Array

关于Javascript:将包含日期的数组按降序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6178671/

相关文章:

javascript - 验证 vue.js 中的对象结构

javascript - 在卸载/离开页面之前检查给定表单中的更改

javascript - d3JS 图表无法正确呈现

c - 在C中高效地遍历排序数组

javascript - 从嵌套数组生成唯一组合 (JS)

c - 如何从文件中的不同行读取字符串和整数

sorting - Solr 中按特定顺序对多个字段进行排序

javascript - jquery弹出在post方法中提交表单

perl - 有这种类型的名称吗?

MySQL 按字母数字排序不起作用