Js自定义排序

时间:2018-07-14 09:25:24

标签: javascript arrays sorting

我正在尝试对字符串数组['d', 'CC', 'BB', 'b', 'a', 'Am','AMG']进行排序 按照["AMG", "Am", "a", "BB", "b", "CC", "d"]

的顺序

使用

arr.sort(function (a, b) {
  return a.toLowerCase().localeCompare(b.toLowerCase());
});

我得到["a", "Am", "AMG", "b", "BB", "CC", "d"]

1 个答案:

答案 0 :(得分:2)

在交换字母大小写之后,您可以链接一些排序条件,然后

  • 按首位小写字母升序排序
  • 按长度降序排序
  • 按字符串升序排序

function swap(s) {
    return Array.from(s, c => c.toUpperCase() === c ? c.toLowerCase() : c.toUpperCase()).join('');
}

var array = ['d', 'CC', 'BB', 'b', 'bb', 'a', 'Am', 'AMG'];

array.sort((a, b) => {
    var aa = swap(a),
        bb = swap(b);

   return a[0].toLowerCase().localeCompare(b[0].toLowerCase())
       || bb.length - aa.length
       || aa.localeCompare(bb);
});

console.log(array); // ["AMG", "Am", "a", "BB", "b", "CC", "d"]