javascript 数组排序的问题与解决方法

发布时间:2019-09-19编辑:脚本学堂
本人遇到的一个javascript数组排序的问题,主要还是对sort等排序原理理解不够,给出了具体的解决方法,供大家学习参考。

例1,test1.html
 

复制代码 代码示例:
<html>
 <body>
 <script  type ="text/javascript">
  var  y  =   new  Array( 10 , 30000 , 12 );
 y.sort();
 alert(y);
 </script>
 </body>
</html>
 

排序结果正确。

例2,test2.html
 

复制代码 代码示例:
<html>
 <body>
   <script  type ="text/javascript"> 
//javascript 数组排序
//www.jb200.com
  var  y  =   new  Array( 36000 , 500 , 10100 );
 y.sort();
 alert(y);
 </ script>
 </ body>
 </ html>
 

排序结果不正确。
原来它是按照首字母来排序的。

查看javascript手册中的解释如下:

sort 方法
返回一个元素已经进行了排序的 Array 对象。

arrayobj.sort(sortfunction)

参数
arrayObj

必选项。任意 Array 对象。

sortFunction

可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

随后加入:
test2.html
 

复制代码 代码示例:
<html>
 <body>
   <script  type ="text/javascript">
  function  AscSort(x, y)
 {
   return  x  ==  y  ?   0  : (x >  y  ?   1  :  - 1 );
}
 
 function  DescSort(x, y)
 {
   return  x  ==  y  ?   0  : (x >  y  ?   - 1  :  1 );
}
  var  y  =   new  Array( 36000 , 500 , 10100 );
 y.sort(AscSort);
 alert(y);
 </ script>
 </ body>
 </ html>
 

便得正确排序了。
于是怀疑java中也不是想像中的那么个用法。
用以下的例子检测下。
 

复制代码 代码示例:
 import  java.util. * ;
 public   class  test
 {
  public   static   void  main(String []args)
  {
   int  [] x  =   new   int  [] { 1 , 2 , 3 , 9 , 4 } ;
  Arrays.sort(x, 0 ,x.length);
   for ( int  i = 0 ;i <x.length;i ++ )
   {
   System.out.println(x[i]);
  }
 }
}

顺利通过,不过通过之前还是发生过小错误,那就是直接用了x.sort。自从转行写JSP 后(而其中我基本使用JSTL不写一行<%%>所以知识都忘了些。)

就介绍这些吧,希望有助于大家掌握javascript数组排序的知识。
脚本学堂,祝大家学习进步。