使用Chrome对Javascript数组进行排序?

使用Chrome对Javascript数组进行排序?,javascript,arrays,sorting,google-chrome,Javascript,Arrays,Sorting,Google Chrome,有没有一种方法可以使用Chrome对数组进行排序 如本例所示,使用排序功能不起作用: var myArray = [1,4,5,3,2]; myArray.sort ( function( a , b ){ return b>a }); for ( var i = 0; i < myArray.length; i++ ) { document.write( myArray[i] ) } var myArray=[1,4,5,3,2]; myArray.sort(函数(

有没有一种方法可以使用Chrome对数组进行排序


如本例所示,使用排序功能不起作用:

var myArray = [1,4,5,3,2];

myArray.sort ( function( a , b ){
  return b>a
});

for ( var i = 0; i < myArray.length; i++ )
{
  document.write( myArray[i] )
}
var myArray=[1,4,5,3,2];
myArray.sort(函数(a,b){
返回b>a
});
对于(var i=0;i
Firefox/IE/Opera/Safri输出:
54321

Chrome输出:
53241



谢谢你的时间

比较器函数应返回负数、正数或零(这是编程语言的惯例)


完整描述如下:

Chrome的行为是正确的:)

ECMA标准要求传递给sort()的函数返回大于0、小于0或等于0的数字。但是,您定义的函数返回true/false。ECMA标准规定,对于行为不符合预期的功能,实现取决于客户端


我认为,正确的理由是:,更具体地说


阅读后,如果您觉得需要实现自己的数组排序功能,您可以看看:

,因为ECMA标准涵盖了有关排序数组的内容(以非常简单的方式):

  • 如果在比较中收到1 A,则下降一个位置
  • 如果收到-1,则维持该职位并定义上级排名 朝B方向
  • 如果接收到0,则不执行任何操作
在所有浏览器中保证相同行为的最安全方法是:

//降序
abc=[10,2,4,1];
abc.排序(功能(a、b){
返回a>b-1:1;
});
//升序
abc.排序(功能(a、b){
返回a>b?1:-1;
});
对于基本体对象,可以使用短版本

//降序
abc.排序(功能(a、b){
返回b-a;
});
//升序
abc.排序(功能(a、b){
返回a-b;
});
如果您有下一个阵列:

var项目=[
{name:'Edward',value:21},
{name:'Sharpe',值:27},
{name:'And',value:31},
{name:'The',value:-12},
{name:'Zeros',值:37},
{名称:'磁性',值:37}
]
正确的方法是:

items.sort(函数(a,b){
变量结果=a==b?0:b>a?-1:1
如果(结果==0)
{
//实施严格的中断评估
}
返回结果;
});

这是正确的方法,因为ECMA标准中没有定义浏览器的迭代方式,并且浏览器可能以不同的方式进行迭代。例如,大多数浏览器从上到下进行迭代,但chrome会用最后一个元素迭代第一个元素,然后再向上迭代。因此,如果出现紧张的情况,可能会导致大多数浏览器出现不同的结果。

我来晚了一点,请原谅我的误解,但您给出的链接正在讨论Chrome排序的稳定性,当多个元素将评估为同一级别时。但这与这里所问的问题不同,每个项目都有一个不同的排名。同样的解决方案在以“mm/dd/yyyy”格式对日期排序时不起作用这是我在chrome和其他浏览器中都起作用的,与其他答案相反
myArray.sort(function(a, b) {
  return a-b;
});