按字母顺序排列 - 首先是小写

时间:2016-02-09 10:11:05

标签: javascript jquery sorting

给定数组:

0

如果我要使用:

var myArray = ['d','a','k','v','z','A','t','G']

结果将是:

myArray.sort()

有没有办法修改排序函数或输出,将大写字母放在数组的末尾,如下所示:

myArray = ['A','G','a','d','k','t','v','z']

纯Javascript或jQuery都可以。

5 个答案:

答案 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;
&#13;
&#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));