javascript中用数组sort排序问题

来源:互联网 发布:powermill编程 编辑:程序博客网 时间:2024/05/01 03:52

对于javascript中sort函数之前只是简单使用,并没有详细的追究其原理,今天写了一段简单的代码,结果就发现问题了。。。

<script type="text/javascript">        var years = new Array(1993,1999,1989,2001,2010);        var sortYeays=years.sort();        document.write("排序前:"+years);         document.write("排序后:"+sortYeays);</script>
执行结果如下:
排序前:1989,1993,1999,2001,2010排序后:1989,1993,1999,2001,2010
到这里可能你也会发现问题,排序前应该是:1993,1999,1989,2001,2010。但结果却是排序后的结果。。委屈
查阅资料后发现在javascript中sort函数是对数组的引用排序,不会产生副本。知道这个原因就不难解释上面的现象了,上面的代码执行
var sortYeays=years.sort();后,对years数组的引用进行了排序,这样在存储空间中years保存的值就是排序之后的结果。后面再调用years数组,就是用的新的结果值。而不是在存储空间中开辟一块years数组的副本(用来保存sort后的结果值)。所以就会造成上面的执行结果,但下面的代码就会得到我们想要的结果
<script type="text/javascript">        var years = new Array(1993,1999,1989,2001,2010);        document.write("排序前:" + years);         document.write("排序后:"+years.sort()); </script>
执行结果如下:
排序前:1993,1999,1989,2001,2010排序后:1989,1993,1999,2001,2010
啰嗦了半天,总之在javascript中的sort函数是在原数组上进行排序,不生成副本。。。。

 


 

原创粉丝点击