我已经完成了一个现代JavaScript练习来创建一个页面,它接受一串单词并以不区分大小写的方式对它们进行排序。这是codepen:http://codepen.io/Mcabrams/full/FvuJg:
// relevant code:
var sorted = words.map(function(value){
return value.toLowerCase();
}).sort();
我想知道如何为sortWords()
创建类似的函数,但是在以不区分大小写的方式排序时,当我返回已排序的单词时,我想保留原始的大小写。< / p>
所需功能的示例:
sortWords(["D","b","A","c"]) ======> ["A", "b", "c", "D"]
目前原来的外壳在我的功能中丢失了。
答案 0 :(得分: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"