js模拟实现Array的sort方法

时间:2021-05-26

JavaScript的Array对象有一个sort方法,用于实现对数组元素的排序,该方法默认按照数组项ASCII字符顺序升序排列。
如[6,7,9,1,-1].sort();执行后数组变为[-1,1,6,7,9]。

对于需要降序排列或非字符串排序,该方法就不能很好的执行了。

当然,sort有一个可选参数,它能帮我们解决这个问题,通过为sort传入一个函数,sort根据函数返回值进行排序。

数组为该函数默认传入数组中的两个元素,如传入a,b,如果函数返回值大于0,则排序方式为b,a,如果返回值小于0,则排序结果为a,b。

具体含义不好解释,当初我也对这个sort其到底是怎么排序的不理解。

如果知道了其实现过程,就对他的排序原理明了了。

sort的实现其实很像是一个简单的冒泡排序。

偶今日对其进行了模拟,看懂这个函数你一定就明白sort的原理了。

<script type="text/javascript"> <!-- var myarray = new Array(8,6,7,9,1,-1,4); var myarray1 = new Array(8,6,7,9,1,-1,4); var sortAsc = function(x,y) { return x-y; }; var sortDesc = function(x,y) { return y-x; }; Array.prototype.st=function(fn){ var t; fn=fn||function(x,y){return x-y}; for(var i=0;i<this.length;i++){ for(var j=i;j<this.length;j++){ if(fn(this[i],this[j])>0){ t=this[i]; this[i]=this[j]; this[j]=t; } } } } myarray.st(); alert("默认升序排列:"+myarray); myarray.st(sortDesc); alert("降序排列:"+myarray); myarray.st(sortAsc); alert("升序排列:"+myarray); myarray1.sort(function(){return 1}); //注:js默认的sort对此排序结果跟这个不一样,其排序方式还暂不理解 alert("逆序排列:"+myarray1); //--> </script>

总结

以上所述是小编给大家介绍的js模拟实现Array的sort方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章