sort()函数是javascript中自带函数,这个函数的功能是排序。

使用sort()函数时,函数参数如果不设置的话,以默认方式进行排序,就是以字母顺序进行排序,准确的讲就是按照字符编码的顺序进行排序。

var arr = [3,2,3,34,12,23,234,84,9];

arr.sort();

// 结果: 12,2,23,234,3,3,34,84,9

通过sort(sortby)函数自定义排序的逻辑。

// 升序

var arr = [3,2,3,34,12,23,234,84,9];

arr.sort(function (a, b) {

return a - b;

});

// 结果:2,3,3,9,12,23,34,84,234

// 降序

var arr = [3,2,3,34,12,23,234,84,9];

arr.sort(function (a, b) {

return b - a;

});

// 结果:234,84,34,23,12,9,3,3,2

上述代码中,用一个匿名函数作为sort()的参数。

在匿名函数中,a和b这两个参数我个人理解就是待排序数组中任意两个连续的元素。

如果:

a - b < 0: 代表后一个比前一个大,就是升序b - a < 0: 代表前一个比后一个大,就是降序a - b = 0 或 b - a = 0: 前后两个数相等

对于一个普通的数组排序,可以很容易的解决。但在开发中,这样的普通数组很少用。

在做前端开发时,往往要配合后端的开发,而前后台的交互现在大都是用json格式的数据,比如这样的数据:

{

"user":[

{ "name": "has", "age": 17, "height": 165 },

{ "name": "saf", "age": 20, "height": 172 },

{ "name": "gngh", "age": 45, "height": 182 },

{ "name": "yjerw", "age": 42, "height": 156 },

{ "name": "cvb", "age": 22, "height": 176 },

{ "name": "wetty", "age": 32, "height": 178 },

{ "name": "aDNY", "age": 34, "height": 175 }

]

}

关对象数组的排序,sort()函数同样适用。

对"age"排序:

// 按age升序排列

var arr = {

"user":[

{ "name": "has", "age": 17, "height": 165 },

{ "name": "saf", "age": 20, "height": 172 },

{ "name": "gngh", "age": 45, "height": 182 },

{ "name": "yjerw", "age": 42, "height": 156 },

{ "name": "cvb", "age": 22, "height": 176 },

{ "name": "wetty", "age": 32, "height": 178 },

{ "name": "aDNY", "age": 34, "height": 175 }

]

};

var users = arr.user;

users.sort(function (a, b) {

return a.age - b.age;

});

// 结果(升序):

/*

name:has age:17 height:165

name:saf age:20 height:172

name:cvb age:22 height:176

name:wetty age:32 height:178

name:aDNY age:34 height:175

name:yjerw age:42 height:156

name:gngh age:45 height:182

*/

如果对name排序呢?

// 按name排列

var arr = {

"user":[

{ "name": "has", "age": 17, "height": 165 },

{ "name": "saf", "age": 20, "height": 172 },

{ "name": "gngh", "age": 45, "height": 182 },

{ "name": "yjerw", "age": 42, "height": 156 },

{ "name": "cvb", "age": 22, "height": 176 },

{ "name": "wetty", "age": 32, "height": 178 },

{ "name": "aDNY", "age": 34, "height": 175 }

]

};

var users = arr.user;

users.sort(function (a, b) {

return a.name - b.name;

});

// 结果:

/*

name:aDNY age:34 height:175

name:cvb age:22 height:176

name:gngh age:45 height:182

name:has age:17 height:165

name:saf age:20 height:172

name:wetty age:32 height:178

name:yjerw age:42 height:156

*/

可以看到这样的字符串排序就是按照字符的ASCII码来比较。

sort()函数功能完全取决于sort()函数中的匿名函数。

文章链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: