在js中可以利用sort对数组或字典进行排序,但在sort中有个函数,排序的基准就是根据这个函数决定的。
对数组进行排序
<script>
var arr = [1,5,3,2,8,6];
arr.sort();
console.log(arr);
</script>
<script>
var arr = [1,5,3,2,8,6];
arr.sort(function(a,b){
return a-b;
});
console.log(arr);
</script>
上面sort中写函数和不写函数结果一样,因为都是基于数组进行排序的。
在排序后会自动替换之前的数组。
sort()的括号中可以写函数
- 如果a<b , 即function(a,b)<0 ,那么a会被排在b之前;
- 如果a=b , 即function(a,b)=0 ,那么a和b的位置将会不变;
- 如果a>b , 即function(a,b)>0 ,那么a会被排在b之后;
sort中的函数还可以让sort基于谁排序
例:字典中基于value进行排序,需要把函数中return后面改成value值相减的形式。
var arr = {"a":"1","b":"2","c":"3","d":"5","e":"0"};
var ret = Object.keys(arr).sort(function(a,b){return arr[a]-arr[b];});
for (var key in ret) {
console.log(ret[key]+":"+arr[ret[key]]);
}