开启左侧

[CSS] javascript数组排序

[复制链接]
发表于 2012-4-13 17:31:39 | 显示全部楼层 |阅读模式
js中sort函数只能比较字符串。
var arr = [4,8,15,16,23];
arr.sort();
结果为[15,16,23,4,8],这样的结果并不符合我们的要求。扩展sort方法,排序结果为[4,8,15,15,23].
如果是s=[
[first:'joe',last:'awk'],
[first:'zwe',last:'oli'],
[first:'joe',last:'asp']
];
a.sort(by('first')).sort(by('last'));
结果为根据first字段排序,然后再根据last字段排序。这个by函数怎么写?
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-4-13 17:31:43 | 显示全部楼层
s=[  {first:'joe',last:'awk'},  {first:'zwe',last:'oli'},  {first:'joe',last:'asp'} ]; s.sort(function(a,b){  return a.first>b.first; }); function toStr(obj){  if(obj instanceof Array){   var re = ['['];   for(var i=0,v;v=obj[i++];){    re.push(arguments.callee(v));   }   re.push(']');  }else{   re = ['{'];   for(var k in obj){    re.push(k.concat(':',obj[k]));   }   re.push('}');  }  return re.join(''); }  alert(toStr(s));
运行代码复制代码另存代码 提示:您可以先修改部分代码再运行

不知道你想说啥。。。
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-4-13 17:31:46 | 显示全部楼层
写法错误,应该是
  1. s = [
  2. {first:'joe',last:'awk'},
  3. {first:'zwe',last:'oli'},
  4. {first:'joe',last:'asp'}
  5. ];
  6. 复制代码
复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title><script type="text/javascript">s = [ {first:'joe',last:'awk'}, {first:'zwe',last:'oli'}, {first:'joe',last:'asp'}];for(var i=0;i<s.length;i++){ document.write(s.first + " " + s.last + "<br/>");}document.write("<hr/>")s.sort(function(a,b){ var result = a.first.localeCompare(b.first); if(result == 0)  result = a.last.localeCompare(b.last); return result;})for(var i=0;i<s.length;i++){ document.write(s.first + " " + s.last + "<br/>");}</script></head><body></body></html>
运行代码复制代码另存代码 提示:您可以先修改部分代码再运行
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

 
QQ在线咨询
售前咨询热线
0532-88371356
售后服务微信
pingduwangzhan
快速回复 返回顶部 返回列表