Array.sort()在所有浏览器中的工作方式是否相同? [英] Does Array.sort() not work the same in all browsers?

查看:77
本文介绍了Array.sort()在所有浏览器中的工作方式是否相同?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在尝试使用Array.sort(函数)时,我得到了不同浏览器的不同结果。怎么可能?难道我不应该期待相同的结果 -

给定输入数组和排序函数是相同的吗?怎么了?

在这里?


问候,

托马斯

While experimenting with Array.sort(function) I got different results from
different browsers. How can that be? Shouldn''t I expect identical results -
given both the input array and the sort function are identical? What''s wrong
here?

Greetings,
Thomas

推荐答案

>在尝试使用Array.sort(函数)时,我从
> While experimenting with Array.sort(function) I got different results from
不同的浏览器得到了不同的结果。怎么可能?难道我不应该期待相同的结果 -
考虑到输入数组和排序函数是相同的吗?这有什么问题?
different browsers. How can that be? Shouldn''t I expect identical results -
given both the input array and the sort function are identical? What''s wrong
here?




您认为可以与我们分享一个例子吗?



Do you suppose you could share an example with us?


同样出现道格拉斯·克罗克福德:
Also sprach Douglas Crockford:
你认为你可以与我们分享一个例子吗?
Do you suppose you could share an example with us?



当然:
< br $>
a = new Array(0,1,2,3,4,5,6,7,8,9);

a = a.sort(函数(a,b) ){return a + 3-b;});

t ='''';

for(i in a)t + = a [i];

alert(t);


IE5说1205643987

Mozilla说0142857639

Opera7说1052438769


为什么不同的浏览器会使用相同的代码给出不同的结果?


Sure:

a = new Array(0,1,2,3,4,5,6,7,8,9);
a = a.sort(function(a,b){return a+3-b;});
t='''';
for(i in a) t+= a[i];
alert(t);

IE5 says "1205643987"
Mozilla says "0142857639"
Opera7 says "1052438769"

So why do different browsers give different results with identical code?


> a = new Array(0,1,2,3,4,5,6,7,8,9);
> a = new Array(0,1,2,3,4,5,6,7,8,9);
a = a.sort(function(a,b){return a + 3-b;});
t ='''';
for(i in a)t + = a [i];
alert(t);

IE5说" 1205643987"
Mozilla的说" 0142857639"
Opera7说" 1052438769"

那么,为什么不同的浏览器得到具有相同的代码不同的结果
a = a.sort(function(a,b){return a+3-b;});
t='''';
for(i in a) t+= a[i];
alert(t);

IE5 says "1205643987"
Mozilla says "0142857639"
Opera7 says "1052438769"

So why do different browsers give different results with identical code?




你的比较函数是错误的,而不是排序。一致行动所需的功能是
,这样一个< b< c。


由于您的比较功能可以报告c< a,你在向

分拣机撒谎。结果的差异是由于实施的不同。

http:// www.crockford.com/


这篇关于Array.sort()在所有浏览器中的工作方式是否相同?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆