一、数组的默认排序
var arr = [8,7,6,1,2,4,3,9,5]
console.log(arr.sort())
输出结果:[1, 2, 3, 4, 5, 6, 7, 8, 9],默认是升序排列,从小到大
二、sort()比较函数实现降序,从大到小排列
var arr = [8,7,6,1,2,4,3,9,5]
console.log(arr.sort(function(a,b){
return b- a
}))
输出结果:[9, 8, 7, 6, 5, 4, 3, 2, 1]
知识点:
1.参数a和b,就是依次从数组中取连续的两个元素,如从示例中先选择前两个元素 8,7。
所以,在匿名函数内 b - a
的结果是 -1。
再看下,匿名函数的结果跟排序的关系:
如果小于 0
,那么 a
会被排列到 b
之前;
如果等于 0
, a
和 b
的相对位置不变。备注:ECMAScript
标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本);
如果大于 0
, b
会被排列到 a
之前。
必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。
三、中文实现排序
var array = ['最', '啊', '传', '不'];
var resultArray = array.sort(
function (param1, param2) {
return param1.localeCompare(param2,"zh")
}
)
console.log(resultArray)
var resultArray2 = array.sort(
function (param1, param2) {
return param2.localeCompare(param1,"zh")
}
)
console.log(resultArray2)
输出结果:
1.["啊", "不", "传", "最"]
2.["最", "传", "不", "啊"]