javascript sort()排序用法
sort() 方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串UniCode码。因为排序是按照字符串UniCode码的顺序进行排序的,所以首先应该把数组元素都转化成字符串(如有必要),以便进行比较。
语法:arrayObject.sort(sortFunction);
参数
- arrayObj 必选项。任意 Array 对象。
- sortFunction 可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。
注意:sortFunction参数,用来规定排序的顺序,必须是函数。
一、sort()未传参数的使用
例1:arrayObj 均为字符串,则按照字母顺序排序;
var arr = ['ff','ee','xc','uu','kl'];
arr.sort();
console.log(arr); //输出: ["ee", "ff", "kl", "uu", "xc"]
例2:arrayObj 均为数字或者数字型字符串,则按照字母顺序排序;
var arr = ['33',68,'65',325,'648'];
arr.sort();
console.log(arr); //输出:[325, "33", "648", "65", 68]
例3:arrayObj 为字母型字符串或者数字或者数字型字符串,则按照字母顺序排序;
var arr = [8,'g',35,'e',5];
arr.sort();
console.log(arr); //输出:[35, 5, 8, "e", "g"]
上面三个例子可以看出,都是按照 unicode码 顺序排序,排序的规则似乎不是自己想要的,不着急,接下来我们来看看 sort 的参数 sortFunction 怎么来配合使用。
二、sort()传参数的使用
sortFunction 该函数需要比较两个值的大小,然后返回比较的结果,用于表明相对顺序。
- 负值,如果所传递的第一个参数比第二个参数小。
- 零,如果两个参数相等。
- 正值,如果第一个参数比第二个参数大。
形象说法为:函数有两个参数 a 和 b 进行比较,如下:
- 若 a - b 小于零,则返回一个小于零的值,数组将按照升序排列。
- 若 a = b,则返回 0。
- 若 a - b 大于零, 则返回一个大于零的值,数组将按照降序排列。
例1:arrayObj 均为字符串,则不做任何排序操作
var arr = ['ww','ff','dd','kk'];
function compare(a,b){
return a-b;
}
console.log(arr.sort(compare)); //输出:["ww", "ff", "dd", "kk"]
var arr = ['ww','ff','dd','kk'];
function compare(a,b){
return b-a;
}
console.log(arr.sort(compare)); //输出:["ww", "ff", "dd", "kk"]
例2:arrayObj 为字母型字符串或者数字型字符串,则不做任何排序操作
var arr = ['w',5,'d',2];
function compare(a,b){
return a-b;
}
console.log(arr.sort(compare)); //输出:["w", 5, "d", 2]
var arr = ['w',5,'d',2];
function compare(a,b){
return b-a;
}
console.log(arr.sort(compare)); //输出:["w", 5, "d", 2]
例3:arrayObj 均为数字或者数字型字符串,则按规则排序
var arr = [5,'3',6,'8',2];
function compare(a,b){
return a-b;
}
console.log(arr.sort(compare)); //输出:[2, "3", 5, 6, "8"]
var arr = [5,'3',6,'8',2];
function compare(a,b){
return b-a;
}
console.log(arr.sort(compare)); //输出: ["8", 6, 5, "3", 2]
以上例子可以看出 ,只有数字和数字型字符串才能进行比较;在使用时需要注意 sortFunction 参数的规则;
三、sort() 参数 sortFunction 扩展
上面的例子都是单一的数组格式。在实际应用中,尤其是在数据交互中,后端会返回 json 格式的数据; 那么对于这种数据,我们该如何判断呢?请看下面这个例子:
var obj = [
{username:'张三',age:40,sex:1},
{username:'李四',age:35,sex:2},
{username:'王五',age:45,sex:1}
];
function compare(key){
return function(a,b){ //此时的a和b对应的是obj当中的元素
var val1 = a[key];
var val2 = b[key];
return val1-val2;
}
}
console.info(obj.sort(compare('age')));
/*输出:[
{username: "李四", age: 35, sex: 2},
{username: "张三", age: 40, sex: 1},
{username: "王五", age: 45, sex: 1}
]
*/
关于的 sort() 的用法就介绍到这里,如果你有更多关于sort()的用法,愿你能予以补充!谢谢!