Я пытаюсь сортировать массив строк ['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"]
Вы можете связать некоторые критерии сортировки, заменив регистр букв, затем
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"]
a
идет перед записью дляam