数组sort方法在不传递参数的情况下会调用toString()转型方法,然后比较得到的字符串,以确定如何排序。
上面这段话摘自高程三中对sort的描述,更直白点:不传递参数是按照字符编码表的顺序进行排序的:
var arr = [12,10,8,7,20,11]; arr.sort(); console.log(arr); // [10,11,12,20,7,8];
sort方法可以接收一个比较函数作为参数,比较函数接收两个参数:
如果第一个参数应该位于第二个之前则返回一个负数
如果两个参数相等则返回0,
如果第一个参数应该位于第二个之后则返回一个正数
var log = console.log.bind("console"); var arr = [12,10,8,7,20,11]; function compare (value1,value2) { if(value1 < value2) { return -1; } else if(value1 > value2) { return 1; } else { return 0; } } log(arr.sort(compare)); // [7,8,10,11,12,20]