在javascript中自定义排序

Ros*_*han 1 javascript arrays sorting

(我之前也曾问过这个问题,但已被标记为重复,但答案不符合我的要求)

我有一个数组 a=["Apple","Mango","apple","mango"].如果我使用a.sort()的结果是 ["Apple", "Mango", "apple", "mango"]

但我想要的是

Apple,apple,Mango,mango
Run Code Online (Sandbox Code Playgroud)

记住它不是inSensitive排序,因为无论数组中给定元素的顺序如何,输出都应该是

苹果 苹果芒果芒果 意味着大写字母应该在较小的之前

Poi*_*nty 8

那么你比较需要做2轮比较.

a.sort(function(e1, e2) {
  var ce1 = e1.toLowerCase(), ce2 = e2.toLowerCase();
  if (ce1 < ce2) return -1;
  if (ce1 > ce2) return 1;
  // at this point, we know that the two elements are the same
  // except for letter case ...
  if (e1 < e2) return -1;
  if (e1 > e2) return 1;
  return 0;
});
Run Code Online (Sandbox Code Playgroud)

首先,该函数在转换为小写后检查两个元素.如果在转换为小写后它们相等,则会检查原始表单.因此,"苹果"和"苹果"在第一轮比较相同,因此将进行排序,以便"Apple"排在第一位.