JavaScript数组的排序
JavaScript中对数组的排序分为两种
-
第一种,对字母的排序
对字母进行排序可以直接调用数组中的sort方法进行排序,JavaScript会默认以字母表顺序来帮我们排序
排序前:
var sort = ['B','A',"D","E","C"];
排序后:
从浏览器中输出的信息可以看出他已经帮我们按照字母表的顺序排序好了。
但是这种方法只能适用于字母的排序,也就是说对于数字的排序是不适合的
如下代码
var sort = [10,9,5,12,31,51,12]; console.log("排序前:" + sort); sort.sort(); console.log("排序后:" + sort);
在浏览器中我们可以清楚的看到,他的输出结果是这样的。没有按照我们的预想进行排序(从小到大,或者从大到小),这是因为sort会默认的按照字符串顺序进行排序,所以在对数字排序的时候会产生一些不可预料的错误。
PS: sort() 排序底层是按照 ASCII 码大小 ,对字符进行排序的,他会取出字母的首字母进行比较然后排序的。
当这种的方法显然不适合对数字进行排序。
-
第二种,对数字进行排序
上面说了。直接调用sort方法是无法对数值进行排序的,但是sort方法可以让我们自定义比较器,然后对数值进行比较
比较函数
比较函数的目的是定义我们自己的排序顺序
比较函数应该返回一个负,零或正值,这取决于参数:
function(a, b){return a-b}
当 sort() 函数比较两个值时,会将值发送到比较函数,并根据所返回的值(负、零或正值)对这些值进行排序。小的排在前面,大的数排在后面
返回值 说明 大于0 大的排数在前面,小的数排在后面 小于0 小的排数在前面,大的数排在后面 如下代码
var sort = [1,10,9,5]; console.log("排序前:" + sort); sort.sort(function(a,b){return a - b}); console.log("排序后:" + sort);
这时就可以正常的对数字进行排序了