js 数组sort()
遇到及一件有意思的事情,关于数组排序的问题。
sort()排序的依据是按字符跟字符编码来排序的(详见 W3c点击打开链接)
现在我想把一个有序的数组打乱,变成无序数组。
<script>
var arr = ['images/1.jpg','images/2.jpg','images/3.jpg','images/4.jpg','images/5.jpg','images/6.jpg'];
function randomsort() {
return Math.random()>.5 ? -1 : 1;
//用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1
}
arr=arr.sort(randomsort);
</script>
这样输出的结果会是一个无序的数组。
为什么我觉得这个很有意思呢!就是因为对sort()里边的参数理解不够深。
我感觉这个sort函数是在数组里拿两个数在比较,若return > 0 b前a后;reutrn < 0 a前b后;a=b时存在浏览器兼容 简化一下:a-b
输出从小到大排序,b-a输出从大到小排序。至于拿的哪两个数,估计就是随机的了。
我一直认为是顺序比较,自己就一直觉得不应该啊!怎么会这样。这个可能就是我做这么长时间的固有思想吧!什么都是一步步来
的。说到底还是思维不够发散,对着这些无关痛痒的问题瞎猜想。如果真想了解sort()的工作原理,恐怕要去看js最底层跟基础的
东西。不知道理解的对不对,所以发出来真心希望有人能指正出来。到时候将不胜感激。