JavaScript中的sort如果对字符串/对象进行排序,排序规则是怎样的

 我来答
网海1书生
科技发烧友

2017-01-10 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
对字符串数组排序很简单,只需要直接用sort()即可,这是它的默认排序方式(按字符顺序或者说按字符的ASCII码顺序):

var a = ["666", "123", "4", "88", "1111"];
alert(a.sort()); //1111,123,4,666,88

如果是数值数组,也直接使用sort()的话,也是按字符方式来排序的,需要给sort提供一个自定义的排序规则函数才能实现按数值大小排序:
var a = [666, 123, 4, 88, 1111];
alert(a.sort()); //1111,123,4,666,88
alert(a.sort(function(a, b){return a-b;})); //4, 88, 123, 666, 1111

如果是对象数组,要根据对象中一个共同的属性值来排序,则情况要复杂得多,需要定义一个比较函数来实现:
var a = [{"name":"张三", "age":34}, {"name":"李四", "age":28}, {"name":"王五", "age":45}, {"name":"赵六", "age":37}];
a.sort(function(n){
return function(o,p){
var a,b;
if(typeof o==="object"&&typeof p==="object"&&o&&p){
a=o[n];
b=p[n];
if(a===b)return 0;
if(typeof a===typeof b)return a<b?-1:1;
return typeof a<typeof b?-1:1;
}else{
throw "error";
}
}
}("age")); //排序结果此略
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式