Safari不像其他浏览器那样对对象数组进行排序

Sim*_*old 13 javascript arrays safari jquery object

var myArray = [{date:"2013.03.01"},{date:"2013.03.08"},{date:"2013.03.19"}];
Run Code Online (Sandbox Code Playgroud)

我试过了:

function(a,b){
  return b.date > a.date;
}
Run Code Online (Sandbox Code Playgroud)

function(a,b){
  return b.date - a.date;
}
Run Code Online (Sandbox Code Playgroud)

Chrome和Firefox中的console.log 为我提供了所需的输出:

"2013.03.19", "2013.03.08", "2013.03.01"
Run Code Online (Sandbox Code Playgroud)

Safari提供原始排序:

"2013.03.01", "2013.03.08", "2013.03.19"
Run Code Online (Sandbox Code Playgroud)

为什么?

Bla*_*ger 29

JavaScript中的排序函数应该返回一个实数 - 不是true或false,还是字符串或日期.该数字是正数,负数还是零会影响排序结果.

尝试这种排序功能(它也将按反向字母顺序正确排序任何字符串):

myArray.sort(function(a,b){
  return (b.date > a.date) ? 1 : (b.date < a.date) ? -1 : 0;
});
Run Code Online (Sandbox Code Playgroud)