5

単語の文字列を受け取り、大文字と小文字を区別せずに並べ替えるページを作成するために、ModernJavaScriptの演習を完了しました。これがcodepenです:http ://codepen.io/Mcabrams/full/FvuJg :

// relevant code:
var sorted = words.map(function(value){
    return value.toLowerCase();
}).sort();

と同様の関数を作成する方法を知りたいのですがsortWords()、大文字と小文字を区別せずに並べ替えるときに、並べ替えられた単語を返すときに、元の大文字と小文字を維持したいと思います。

必要な機能の例:

sortWords(["D","b","A","c"]) ======> ["A", "b", "c", "D"]

現在、元のケーシングは私の機能で失われています。

4

1 に答える 1

10

Array.sort()組み込みの方法でカスタムコンパレータを使用します。

function insensitive(s1, s2) {
  var s1lower = s1.toLowerCase();
  var s2lower = s2.toLowerCase();
  return s1lower > s2lower? 1 : (s1lower < s2lower? -1 : 0);
}

["D","b","A","c"].sort(insensitive);  //"A", "b", "c", "D"
于 2013-01-13T22:11:51.787 に答える