通过自己的理解及网上查阅资料,发现了使用sort()方法排序时的小问题
大家是不是觉得对数组arr=[2,3,9,8,6,33];进行arr.sort()排序后,数组会变成arr=[2,3,6,8,9,33]呢?
自己演示一遍就知道不是了,数组会变成arr=[2,3,33,6,8,9]。
为什么会出现这种情况呢?原因是数组在比较大小事会转成字符串的形式去比较,先比较第一个的大小,如果相同在比较第二个,如3和33。
解决方法:自己编一个函数传给sort()方法。下面举个例子:
假设返回值为非正数则不交换位置,如果是正数则交换位置
arr=[2,3,9,8,6,33];
function sortFunction(x,y)
{
return x-y;
}
arr.sort(sortFunction);
for(i=0;i
{
alert(arr[i]);
}
以上问题就可已解决了