1. 问题背景
如果定义了一个字符串类型数组,可以直接使用sort方法,对元素进行排序;但是如果数组的元素是数值类型的,使用sort方法进行排序,效果就达不到了。如果坚持使用sort方法对数值类型元素排序,可以添加一个比较大小的函数。
2. 实现源码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>使用sort方法给数组元素排序</title>
<script>
window.onload = function(){
var a = ['hui','you','are','save','add','opp'];
a.sort();
console.log(a);
var b = [23,90,100,1,300,768,2];
b.sort();
console.log(b);
}
</script>
</head>
<body>
</body>
</html>
3. 实现效果
4. 改进源码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>使用sort方法给数组元素排序</title>
<script>
window.onload = function(){
var a = ['hui','you','are','save','add','opp'];
a.sort();
console.log(a);
var b = [23,90,100,1,300,768,2];
b.sort(compareData);
console.log(b);
}
function compareData(n1,n2){
return n1 - n2;
}
</script>
</head>
<body>
</body>
</html>
5. 改进效果
6. 代码说明
sort方法是按照字典顺序对元素进行排序的,因此它排序的元素类型都是字符串;如果元素类型是数值类型,它也会认为是字符串。如果还是想要使用sort方法对数组数值元素排序,可以在排序之前传入一个比较大小的函数,sort方法可以根据函数比较两个元素的大小,确定数组的顺序。