points 输出结果:
100,40,25,10,5,1数字排序 (字母和降序):
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;fruits 输出结果:
Orange,Mango,Banana,Apple路人乙
305***8979@qq.com
panlf
364***434@qq.com
huangyifan
546***203@qq.com
var arr = [9,7,2]; arr.sort(function(a,b){ if(a>b) // 如果 a 大于 b,位置互换 return 1; else //否则,位置不变 return -1; 首先,第一个参数并不是在第二个参数前面,恰恰相反,参数 b 始终在参数 a 的前面。即第一比较 a>b 其实比较的是 7>9。
第一次比较:7>9,结果为 false,即 return -1,此时 a 会换到 b 前面,即 7 在 9 之前,所以位置互换,并不是这位网友说的 a>b 位置互换,而是 a<b 位置互换。
但是最后输出的结果一样,是因为 a、b 循序理解反了,然后关于 return 结果导致位置交换的概念也弄反了,反反得正,结果就一样了。
杨shuai
175***8771@qq.com
九亿少女脚臭
pp7***74714@gmail.com
闻丝卡达
114***4761@qq.com
var values = [0, 1, 5, 10, 15]; values.sort(); alert(values); //0,1,10,15,5
可见,即使例子中值的顺序没有问题,但 sort() 方法也会根据测试字符串的结果改变原来的顺序。因为数值 5 虽然小于 10,但在进行字符串比较时, "10" 则位于 "5" 的前面,于是数组的顺序就被修改了。不用说,这种排序方式在很多情况下都不是最佳方案。因此 sort() 方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。
比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回 0,如果第一个参数应该位于第二个之后则返回一个正数。以下就是一个简单的比较函数:
function compare(value1, value2) { if (value1 < value2) { return -1; } else if (value1 > value2) { return 1; } else { return 0;这个比较函数可以适用于大多数数据类型,只要将其作为参数传递给 sort() 方法即可,如下面这个例子所示。
var values = [0, 1, 5, 10, 15]; values.sort(compare); alert(values); //0,1,5,10,15在将比较函数传递到 sort() 方法之后,数值仍然保持了正确的升序。当然,也可以通过比较函数产生降序排序的结果,只要交换比较函数返回的值即可。
function compare(value1, value2) { if (value1 < value2) { return 1; } else if (value1 > value2) { return -1; } else { return 0; var values = [0, 1, 5, 10, 15]; values.sort(compare); alert(values); // 15,10,5,1,0