HTML:
1字符串数组排序前
2 3排序后
4
jquery:
var animals = ['dog','cat','tiger','pig','bird'];$('#show5').html(animals.join('')); animals = animals.sort();$('#show6').html(animals.join(''));
显示结果:
字符串数组排序前dogcattigerpigbird排序后birdcatdogpigtiger
如果数组换成了数值数组呢?结果会什么怎么样的?
如下:
HTML:
数值数组排序前
排序后
jquery:
ar nums = ['12','2','5','36','4'];$('#show7').html(nums.join('')); nums = nums.sort();$('#show8').html(nums.join(''));
显示结果:
数值数组排序前1225364排序后1223645
很明显,数值数组最后的排序结果不是我们想要的。这是为什么呢?
因为sort()方法排序,是基于ASCII值进行排序的。故它会认为36小于4(因为3的ASCII值小于4的ASCII值)。所以要对排序的sort()方法定义一个比较函数:jquery:
ar nums = ['12','2','5','36','4'];$('#show7').html(nums.join(''));//定义了sort的比较函数nums = nums.sort(function(a,b){return a-b;});$('#show8').html(nums.join(''));
显示结果:
数值数组排序前1225364排序后2451236
这才是我想要的结果!
知识点:
1,sort(function(a,b){return a-b;})对传入的一对值进行比较,然后返回的的值为:小于0,大于0,等于0;(大于0交换位置,反之则不)
* 当小于0时,说明b>a,故b的排序靠后(即不变).
* 当大于0时,说明a>b,故a的排序靠后.
* 当等于0时,说明a=b,故不改变排序.
如果对数值数组的值进行降序排序。那么只要把返回的值改为b-a!
个人觉得这个方法包含了排序算法的实现过程