0--- 函数比较概念
该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
function(x, y){
return x - y;
}
1--- 对纯粹的英文字符串进行排序
arr.sort(); //> 此方法不会考虑值的大小。
var arr = [33, 3, 6, 2, 4, 1, 5];
console.log(arr.sort())
### 输出:[1, 2, 3, 33, 4, 5, 6]
2--- 升序排序
<script>
var a = ["Java","C","C++","JavaScript","jQuery","PHP","Python"];
a.sort();
console.log(a);
</script>
### 输出:[“C”, “C++”, “Java”, “JavaScript”, “PHP”, “Python”, “jQuery”]
在英文编码中,小写字母比大写字母大,所以"jQuery"被排在了最后。
- 如需降序:`console.log(a.reverse());` 即可
3--- 升序排序,不区分大小写
<script>
var a = ["Java","C","C++","JavaScript","jQuery","PHP","Python"];
a.sort(function (x, y) {
if(x.toLowerCase()>y.toLowerCase())
return 1;
else if(x.toLowerCase()<y.toLowerCase())
return -1;
else return 0;
});
console.log(a);
</script>
### 输出:[“C”,“C++”,“Java”,“JavaScript”,“jQuery”,“PHP”,“Python”]
4--- 数值升序排序
<script>
var a = [5,10,110,55,265,8,1];
a.sort(function (x, y) {
return x-y;
});
console.log(a);
</script>
### 输出:[1, 5, 8, 10, 55, 110, 265]
- 降序排序只需 `return y-x;`
5--- 中文数组按拼音排序
<script>
var a = ["北京","南京","上海","深圳","哈尔滨","呼和浩特","南宁"];
a.sort(function (x,y) {
return x.localeCompare(y,"zh");
});
console.log(a);
</script>
### 输出:["北京", "哈尔滨", "呼和浩特", "南京", "南宁", "上海", "深圳"]
6-- 对象数组排序
<script>
var a = [ { no:"001", name:"张琪", score:80 }, { no:"002", name:"李颖", score:72 }, { no:"003", name:"李新宇", score:75 }, { no:"004", name:"王华", score:72 }, { no:"005", name:"刘江", score:82 } ];
a.sort(function (x,y) {
return y.score-x.score;
});
console.log(a);
</script>
### 输出:
- 0: {no: “005”, name: “刘江”, score: 82}
- 1: {no: “001”, name: “张琪”, score: 80}
- 2: {no: “003”, name: “李新宇”, score: 75}
- 3: {no: “002”, name: “李颖”, score: 72}
- 4: {no: “004”, name: “王华”, score: 72}
备注: 以上均转发自 : https://www.ycmbcd.com/blog/html/15916016656753.html
我补充的是第八种:
7--- 对象数组按照数组中的汉字首字首字母排序
<script>
var a = [
{
no:"001",
name:"张琪",
score:80
},
{
no:"002",
name:"李颖",
score:72
},
{
no:"003",
name:"李新宇",
score:75
},
{
no:"004",
name:"王华",
score:72
},
{
no:"005",
name:"刘江",
score:82
}
];
a.sort(function (x, y) {
return (x.name).localeCompare(y.name, "zh");
});
</script>
### 输出:
- 0: {no: “005”, name: “刘江”, score: 82}
- 1: {no: “002”, name: “李颖”, score: 72}
- 2: {no: “003”, name: “李新宇”, score: 75}
- 3: {no: “001”, name: “张琪”, score: 80}
- 4: {no: “004”, name: “王华”, score: 72}