java对象的排序函数_js数据排序 对象排序 可使用函数sort()

Array对象中的sort()方法是一个很高效的排序方法,用于对数组进行排序。其基本用法有两种:

1、不带参数

数组名.sort();

这种用法只适用于对英文字符串组成的数组按升序排序,结果在原数组中。

2、带参数

sort()方法的参数必须是一个函数,函数可以带一个或两个参数,表示数组的元素,返回值必须是正负零,表示数组元素相比较的办法。

数组名.sort( function(a,b){

return 正、负、零;

});

以下用例子给出常见排序的做法。

一、字符串数组的排序

1、升序排序

var a = ["Java","C","C++","JavaScript","jQuery","PHP","Python"];

a.sort();

console.log(a);

排序结果为:[“C”, “C++”, “Java”, “JavaScript”, “PHP”, “Python”, “jQuery”]。

注意:在英文编码中,小写字母比大写字母大,所以"jQuery"被排在了最后。

2、升序排序,不区分大小写

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()

return -1;

else return 0;

});

console.log(a);

排序结果为:[“C”,“C++”,“Java”,“JavaScript”,“jQuery”,“PHP”,“Python”]。

3、降序排序

var a = ["Java","C","C++","JavaScript","jQuery","PHP","Python"];

a.sort(function (x, y) {

if(x

return 1;

else if(x>y)

return -1;

else return 0;

});

console.log(a);

排序结果为:[“jQuery”,“Python”,“PHP”,“JavaScript”,“Java”,“C++”,“C”]。

二、数值数组的排序

1、升序排序

var a = [5,10,110,45,265,88,9];

a.sort(function (x, y) {

return x-y;

});

console.log(a);

排序结果为:[5, 9, 10, 45, 88, 110, 265]。

2、降序排序

var a = [5,10,110,45,265,88,9];

a.sort(function (x, y) {

return y-x;

});

console.log(a);

排序结果为:[265, 110, 88, 45, 10, 9, 5]。

三、中文数组的排序

中文可以按拼音顺序排序。

1、按拼音升序排序

var a = ["北京","南京","上海","深圳","哈尔滨","呼和浩特","南宁"];

a.sort(function (x,y) {

return x.localeCompare(y,"zh");

});

console.log(a);

排序结果为:[“北京”, “哈尔滨”, “呼和浩特”, “南京”, “南宁”, “上海”, “深圳”]。

localeCompare()是一个新出的字符串比较函数,低版本浏览器可能不支持。

2、按拼音降序排序

var a = ["北京","南京","上海","深圳","哈尔滨","呼和浩特","南宁"];

a.sort(function (x,y) {

return -x.localeCompare(y,"zh");

});

console.log(a);

排序结果为:[“深圳”,“上海”,“南宁”,“南京”,“呼和浩特”,“哈尔滨”,“北京”]。

四、对象数组的排序

如果数组元素是对象,我们可按对象的某个属性进行排序。

1、按对象的指定字段排序

例:按成绩降序排序

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);

排序结果为:

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}

2、双字段排序

例:按年龄从低到高排序,年龄相同时按性别排序

var a = [

{

name:"张琪",

gender:"男",

age:18

},

{

name:"李颖",

gender:"女",

age:17

},

{

name:"李新宇",

gender:"男",

age:18

},

{

name:"王华",

gender:"女",

age:18

},

{

name:"刘江",

gender:"男",

age:17

}

];

a.sort(function (x,y) {

if(x.age!=y.age)

return x.age-y.age;

else {

if(x.gender=="男")

return 1;

else

return -1;

}

});

console.log(a);

排序结果为:

0: {name: “李颖”, gender: “女”, age: 17}

1: {name: “刘江”, gender: “男”, age: 17}

2: {name: “王华”, gender: “女”, age: 18}

3: {name: “张琪”, gender: “男”, age: 18}

4: {name: “李新宇”, gender: “男”, age: 18}

小结:用sort()方法排序时,大部分情况都应该指定比较函数,这个函数给出的是数组中两个元素比较的办法,函数的返回值必须是正负零。你可以自己制定排序规则,这是sort()方法的强大之处。

原文链接:https://blog.csdn.net/fenglin247/article/details/86895913

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值