以特定格式对字符串数组进行排序A-Z AA-ZZ

时间:2017-04-28 13:12:43

标签: javascript sorting

我有像这样的javascript数组

[A,AA,CC,DD,B,C]

我希望它像这样排序

[A,B,C,AA,CC,DD]

4 个答案:

答案 0 :(得分:4)

您可以先按字符串长度排序,然后按字母顺序排序

var arr = ['A', 'B', 'C', 'AA', 'CC', 'DD'];

var result = arr.sort(function(a, b) {
  return a.length - b.length || a.localeCompare(b)
})
console.log(result)

答案 1 :(得分:2)

您可以先按字符串的长度排序,然后按值排序。

var array = ['A', 'AA', 'B', 'C', 'CC', 'DD'];

array.sort(function (a, b) {
    return a.length - b.length || a.localeCompare(b) ;
});

console.log(array);

答案 2 :(得分:0)

比较每个元素的长度 - 如果相等 - 按第一个字母排序。

var str = ['B','A','C','EEE','CCC','AA','DD','CC'],
    res = str.sort(function(a,b) {
      return a.length - b.length || a.charCodeAt(0) - b.charCodeAt(0);
    });
    
    console.log(res);

答案 3 :(得分:0)

如果你想用你提到的模式对数组进行排序,那么下面的代码就可以了。

        var temp1 = [];
        var temp2 = [];
        var temp3 = [];
        b=['a','c','bb','cc','aa','b'];
        a= b.sort();
        for(i=0;i<a.length;i++)
        {
        temp = a[i];
        if(temp.length == 1)
        {
        temp1.push(temp);
        }
        if(temp.length == 2)
        {
        temp2.push(temp);
        }
        }

        temp3 = $.merge(temp1 ,temp2);

如果你问的是一些动态函数可以将你的字符串排序为高于2的长度,如[A,B,AA,BB,AAA,BBB]那么你必须使它更具动态性。