给定数组:
0
如果我要使用:
var myArray = ['d','a','k','v','z','A','t','G']
结果将是:
myArray.sort()
有没有办法修改排序函数或输出,将大写字母放在数组的末尾,如下所示:
myArray = ['A','G','a','d','k','t','v','z']
纯Javascript或jQuery都可以。
答案 0 :(得分:3)
测试第一个字符并应用比较:
var myArray = ['d', 'a', 'k', 'v', 'z', 'A', 't', 'G', 'V'];
myArray.sort(function (a, b) {
if (a[0] === a[0].toLocaleLowerCase() && b[0] === b[0].toLocaleLowerCase() ||
a[0] === a[0].toLocaleUpperCase() && b[0] === b[0].toLocaleUpperCase()) {
return a.localeCompare(b);
}
if (a[0] === a[0].toLocaleLowerCase()) {
return -1;
}
return 1;
});
document.write('<pre>' + JSON.stringify(myArray, 0, 4) + '</pre>');
&#13;
答案 1 :(得分:1)
这是使用compare函数进行数组排序的一个示例:
myArray.sort(function(a, b){
var test = a.charCodeAt(0) <= 90 && b.charCodeAt(0) <= 90;
if(test) return a.charCodeAt(0)-b.charCodeAt(0);
else if(a.charCodeAt(0) <= 90) return 1;
else if(b.charCodeAt(0) <= 90) return -1;
else return a.charCodeAt(0)-b.charCodeAt(0);
});
答案 2 :(得分:0)
一旦你有了这个数组
myArray = ['a','d','k','t','v','z','A','G']
执行此操作以按myArray = ['A','G','a','d','k','t','v','z']
var tempArray = myArray.join("").split(/(?=[A-Z])/);
myArray = tempArray.slice(1).concat( tempArray [0].split("") );
答案 3 :(得分:0)
您应该使用自定义compare function myArray.sort(compareFunction)
。您可以使用的功能内部
像if(a === a.toUpperCase())
等条件来创建你需要的逻辑。
答案 4 :(得分:0)
var myArray = ['d','a','k','v','z','A','t','G'];
_.each(myArray, function(item){
if(item.charCodeAt(0) > 96){
smallArr.push(item)
}
else{
captArray.push(item)
}
});
smallArr.sort();
captArray.sort();
myArray = [];
myArray.push.apply(myArray, smallArr.concat(captArray));