对于数组中的字符串进行排序:
1、运用递归:
每次停止函数需要return false
//排序函数通过字母和数字进行排序,传入参数为true为正序,传入false为倒叙
function objArr(arr,x,y){
if(x == '备注/描述'){
return arr;
};
var finall = -1;
if(y){
finall = 1;
};
function compareFunction(a,b){//字母的转码排序
var m = parseInt(a[x]);
var n = parseInt(b[x]);
if( !isNaN(m) && !isNaN(n)){
if(y){
return m - n;
}else{
return n -m;
}
}
else if(a[x] === b[x]){//TODO 此方法返回1,和-1都不行
return 0;
}
else if(a[x] === ''){
return 1;
}
else if(b[x] === ''){
console.log(-1);
return -1;
}
else if(y){
var i = 0 ;
stringCode(a[x],b[x],i);
return finall;
}
else{
var i = 0;
stringCode(a[x],b[x],i);
return finall;
};
};
//字符串
function stringCode(a,b,i){
if(isNaN(a.charCodeAt(i))){
if(y){
finall = 1;
return false;
};
finall = -1;
return false;
};
if(isNaN(b.charCodeAt(i))){
if(y){
finall = 1;
return false;
};
finall = -1;
return false;
};
if(a.charCodeAt(i) == b.charCodeAt(i)){
i++;
stringCode(a,b,i);
}
else{
if(y){
finall = a.charCodeAt(i) - b.charCodeAt(i);
return false;
}else{
finall = b.charCodeAt(i) - a.charCodeAt(i);
return false;
}
};
};
arr.sort(compareFunction);
return arr;
}
这个函数最后调用完后,不同的字母和数字排序没有问题,唯一的问题是我在相同的字符串调用的这个比较函数的时候,在 a[x] === b[x];我return 1、-1、-1;arr都会进行排序,排序的顺序不定!!!!
浙公网安备 33010602011771号