javascript中数组的sort()方法不指定参数的排序规则是怎样的?

先上代码:

<script language="javascript">
var studentArray=new Array("张三","李四","王五");
document.writeln(studentArray.sort());
var numberArray=new Array(225,110,79,36,0);
document.writeln(numberArray.sort());
</script>

在IE8、opera、火狐浏览器中显示都如下:

张三,李四,王五
0,110,225,36,79

对于汉字的排序,我不知道是按照什么规则来排的。
我试过将“张三”改成“苏某”,“苏某”就排到了第三位,所以不是在代码中哪个写在前面,结果哪个排就在前面。
我查了汉字编码:张 5337 李 3278 王 4585 。所以也不是按照字符编码顺序来排的。

对于数字排序,我觉得很有可能是按照字符串来排的。不知是否正确。

小弟刚刚接触JavaScript,希望各位能够指点一下,关于这个汉字和数字排序是如何排。

先谢谢啦!

sort() 方法用于对数组的元素进行排序。
语法: arrayObject.sort(sortby)
参数:sortby 可选。规定排序顺序。必须是函数。
说明:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
* 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
* 若 a 等于 b,则返回 0。
* 若 a 大于 b,则返回一个大于 0 的值。

参考资料:http://www.w3school.com.cn/js/jsref_sort.asp

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-27
默认方式排序的话, 是按 Unicode 的方式排序的, 在字母与数字来说排序是正确, 但是若是汉字的话, Unicode 与汉字拼音的顺序是不一样的, 所以排出来的序也是不对的, 解决的方法是碰到汉字时把 Unicode 转成 ASCII 码来做, 比如在JS里调用VBS里的 ASC() 函数等本回答被提问者采纳