我正在尝试对字符串数组['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"]
答案 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"]