自定义不区分大小写的排序功能,保留原始外壳?

时间:2013-01-13 22:09:42

标签: javascript sorting user-defined-functions case-insensitive

我已经完成了一个现代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"]

目前原来的外壳在我的功能中丢失了。

1 个答案:

答案 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"