我有以下数组:
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
函数采用的参数是数组元素。
在你的情况下,你的数组元素也是数组......无赖。
您想按每个元素的第一个元素对数组数组进行排序(棘手)。
所以只需将 a
和 b
更改为 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/