2017-01-15 17 views
0

文字列をアルファベット順に並べ替えるにはどうすればよいですか。アルファベット順、大文字で並べ替え

例入力:

["A","d","B","a","D","c","C","b"] 

所望の出力:

["A","a","B","b","C","c","D","d"] 
+1

最初に比較すれば、あなたは敏感に鈍感に最初のケースとを比較し、コールバック関数で配列番号のソートを使用して、ケースでしょう等しい –

+1

考えられている[ 'ソート()'を見てください](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)。 – Tigger

答えて

0

最初に小文字だけを比較し、大文字の値を先に移動できます。

var array = ["A", "d", "B", "a", "D", "c", "C", "b"]; 
 

 
array.sort(function (a, b) { 
 
    var aa = a.toLowerCase(), 
 
     bb = b.toLowerCase(); 
 

 
    return aa.localeCompare(bb) || (a === aa) - (b === bb) ; 
 
}); 
 

 
console.log(array);

0

は、あなたが最初の比較が考慮された場合に敏感その後、ケースを小文字を区別せずに最初のケースを比較して、コールバック関数で配列番号のソートを使用します等しい

["A","d","B","a","D","c","C","b"].sort(function (A, B) { 
    var a = A.toLowerCase(), b = B.toLowerCase(); 
    if (a < b) { 
     return -1; 
    } else if (a > b) { 
     return 1; 
    } else if (A < B) { 
     return -1; 
    } else if (A > B) { 
     return 1; 
    } else { 
     return 0; 
    } 
}); 
0

これはおそらく効率の低い1ライナーですJaromandaのバージョンよりもコードは少ない:

["A","d","B","a","D","c","C","b"].sort((a, b) => String.localeCompare(...(a.toLowerCase() == b.toLowerCase() ? [b, a] : [a.toLowerCase(), b.toLowerCase()])))

関連する問題