如这个数组['2-5-1','2-3','2-1','2-2','1','2-5','2-5-2','2-5-3','2-5-4','2-5-5','2-5-6']
如果是1开头就放在最前面 依次类推然后是2 然后是3 ....然后可能是13如果都是以1开头的
在按后面的大笑开始排序
如 1-3,1-6,1-4-3,1-4-2
排序玩之后应该是1-3,1-4-3,1-4-2,1-6
因为1-4-3与1-4-2顺序还是不对
还要排序一次
排序完之后应该是
1-3,1-4-2,1-4-3,1-6
如果是1开头就放在最前面 依次类推然后是2 然后是3 ....然后可能是13如果都是以1开头的
在按后面的大笑开始排序
如 1-3,1-6,1-4-3,1-4-2
排序玩之后应该是1-3,1-4-3,1-4-2,1-6
因为1-4-3与1-4-2顺序还是不对
还要排序一次
排序完之后应该是
1-3,1-4-2,1-4-3,1-6
解决方案 »
- highcharts 做成的图,图例问题
- 一个用列表实现页面跳转的问题???
- 复杂的正则表达式,帮忙解答 /(<img\s.*?src=)([^"'][^ >]+)/gi
- 谁有向上滚屏的代码啊????是每隔几秒才滚的那种
- 我想知道怎么用脚本 一次性改变所有的 td 的 style
- Form 中一个输入框的名称中有冒号,怎样来访问这个输入框呢?
- js中怎样判断select下拉框的选择内容?在线等
- ==关于<select>的问题==
- javascript的迷惑2:对象编程?过程编程?无风格编程?
- 冒死求下列JAVASCRIPT
- tab页关闭问题,大家都来看一下
- 关于Ext在IE7下button高度的问题!!急!!在线等
arr.sort(function(a,b) {
if(a.length == b.length) {
return (parseInt(a.replace(/-/g,''))) > (parseInt(b.replace(/-/g,'')));
} else {
return a > b;
}
});
alert(arr);
var arr =['2-5-1','2-3','2-1','2-2','1','2-5','2-5-2','2-5-3','2-5-4','2-5-5','2-5-6'];
arr.sort(function(a,b) {
if(a.length == b.length) {
return (parseInt(a.replace(/-/g,''))) > (parseInt(b.replace(/-/g,'')))?1:-1;
} else {
return a > b?1:-1;
}
});
alert(arr);
看下这个对不对了
这是结果:
1
2-1
2-2
2-3
2-5
2-5-1
2-5-2
2-5-3
2-5-4
2-5-5
2-5-6java代码:public class Test {
public static void main(String []args){
try{
String [] str={"2-5-1","2-3","2-1","2-2","1","2-5","2-5-2","2-5-3","2-5-4","2-5-5","2-5-6"};
int []ss={0,0,0,0,0,0,0,0,0,0,0};
for(int i=0;i<str.length;i++){
String st=str[i];
String [] s=st.split("-");
int k=0;
int total=0;
for(int j=0;j<s.length;j++){
k=Integer.parseInt(s[j]);
if(j==0){
total=total+k*100;
}
if(j==1){
total=total+k*10;
}
if(j==2){
total=total+k;
}
}
ss[i]=total;
}
for(int r=0;r<ss.length;r++){
for(int t=r;t<ss.length;t++){
int temp=0;
if(ss[r]>ss[t]){
temp=ss[t];
ss[t]=ss[r];
ss[r]=temp;
}
}
}
for(int i=0;i<str.length;i++){
if(ss[i]%100==0){
ss[i]=ss[i]/100;
}
if(ss[i]%10==0){
ss[i]=ss[i]/10;
}
str[i]=ss[i]+"".trim();
String s=ss[i]+"".trim();
if(s.length()==2){
str[i]=s.substring(0,1)+"-"+s.substring(1,2);
}else if(s.length()==3){
str[i]=s.substring(0,1)+"-"+s.substring(1,2)+"-"+s.substring(2,3);
}
}
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
var arr = ['2-5-1','2-3','2-1','2-2','1','2-5','2-5-2','2-5-3','2-5-4','2-5-5','2-5-6'];
alert(arr.sort());
arr.sort(function(a,b) {
if(a.length == b.length) {
return (parseInt(a.replace(/-/g,''))) > (parseInt(b.replace(/-/g,'')))?1:-1;
} else {
return a > b?1:-1;
}
});
alert(arr);
看下这个对不对了算法不对:
if(a.length == b.length)
如果是: 12-5 和1-25 岂不相同了else
如果是:103 12 103 会跑前面去的 var arr =['2-5-1','2-3','2-1','2-2','1',,'103','2-5','2-5-2','2-5-3','2-5-4','2-5-5','2-5-6','12-1','1-21'];
var arr1 ;
var arr2 ;
var s1=s2=0;
arr.sort(function(a,b) {
arr1 = a.split('-');
arr2 = b.split('-');
for(var i=0;i< Math.max(arr1.length,arr1.length);i++)
{
s1=parseInt((arr1[i]||0),10);
s2=parseInt((arr2[i]||0),10);
if(s1>s2)
{
return 1;
}
if(s1< s2){
return -1;
}
}
return 0;
});alert(arr);
替换的时候-替换为0就可以了sort方法是可以的~~~!
arr.sort(function(a,b) {
if(a.length == b.length) {
return (parseInt(a.replace(/-/g,'0'))) > (parseInt(b.replace(/-/g,'0')));
} else {
return a > b;
}
});
alert(arr);