◆◆◆◆◆难:javascript对二维数组按多列排序

wilowind 2006-06-02 03:27:28
网上找了好久没找到好方法
最初想用array的sort方法,但好像不行。
谁有好的好的解决方法,分享分享。
----------------------------
如果要自己写排序算法,提供个资料
http://www.xyhhxx.com/news/web/20060518113247.htm

----------------------------
另一个难度不小的问题
http://community.csdn.net/Expert/TopicView.asp?id=4790647

----------------------------
...全文
210 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wilowind 2006-06-05
  • 打赏
  • 举报
回复
发帖子,没看到m,n能代表行, 既然这样大概知道怎么写了。 多谢
wilowind 2006-06-05
  • 打赏
  • 举报
回复
列数不固定,不知道具体是哪几列的。 列号要用参数(数组,存储不确定的列号)传入吧?
wilowind 2006-06-05
  • 打赏
  • 举报
回复
不好意思,理解错了。
m,n是自动传入的值。 我还以为是列。

我要求的多列事先是不知道有几列,具体到哪几列。所以排序时至少有个参数是数组,存储列号。
这是按hbhbhbhbhb1021(天外水火(我要多努力))的方法得到的
1,2,3
2,3,5
1,8,4
0,9,3
--------------------------------------------------------------------------------
2,3,5
1,8,4
1,2,3
0,9,3

localeCompare 方法 非自定义
返回一个值,指出在当前的区域设置中两个字符串是否相同。

hbhbhbhbhb1021 2006-06-05
  • 打赏
  • 举报
回复
本来想图省事,哎,只好走下面这条路了。
<script language=javascript>
var a=new Array([1,2,3],[2,3,5],[1,8,4],[0,9,3],[12,2,4]);
a.sort(function(m,n){if(n[0]==m[0]){return n[1]-m[1];}else {return n[0]-m[0]}})
document.write(a.join("<br/>"))
</script>
hbhbhbhbhb1021 2006-06-05
  • 打赏
  • 举报
回复
localeCompare不是自定义的,M和N不代表列,而是代表行。
不好意思,我的代码有些问题,要改
wilowind 2006-06-05
  • 打赏
  • 举报
回复
这2天出去忙的不可开交,也顾不上看帖子。

sort可以是最好了。
不知,hbhbhbhbhb1021(天外水火(我要多努力)) 中,localeCompare是自定义的吗,
m,n哪是第一列,哪是第二列?
hbhbhbhbhb1021 2006-06-02
  • 打赏
  • 举报
回复
TO 小舜
sort方法还可以,挺不错的,可以自定义排序方法,下面就是按第一列先排,排不出按第二列排,应该满足楼主的按多列排序的需求
<script language=javascript>
var a=new Array([1,2,3],[2,3,5],[1,8,4],[0,9,3]);
a.sort(function(m,n){return(n.join("").localeCompare(m.join("")))})
document.write(a.join("<br>"))
</script>
Go_Rush 2006-06-02
  • 打赏
  • 举报
回复
sort方法好象不是很好

<script>
var arr=[1,4,5,11,2,9,-1,0]
alert(arr.sort())
</script>
xuzuning 2006-06-02
  • 打赏
  • 举报
回复
不要“好像”

用array的sort方法就可以轻松搞定。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧