我被这个搞糊涂了。我在 Js 中做了很多排序,但出于某种原因,我的行为很奇怪。
x = [{ts: "2013-09-24 14:44:22"}, {ts: "2013-09-24 14:08:26"}, {ts: "2013-09-24 17:37:42"}].sort(function(a,b) {return a.ts < b.ts;});
console.log(x); // this is sorted
但是,当我使用更长的数组时,排序不起作用。只看第二类的前三个对象:
有什么想法吗?
最佳答案
您的比较器需要返回一个数字,而不是 bool 值。
如果小于则为负数,如果等于0
,如果大于则为正数。
.sort(function(a,b) {
if(a.ts == b.ts) return 0;
return a.ts < b.ts ? -1 : 1;
});
关于javascript - 不一致的 Javascript 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19006983/