如何使我的json数组排序函数不区分大小写?

时间:2014-06-01 22:16:40

标签: jquery

我有以下小提琴,这是我的尝试

  • 拿一个json数组
  • 按显示名称值
  • 对数组进行排序
  • 将排序后的数组作为列表项添加到DOM

我的问题是我希望能够排序而不考虑排序时的值的情况......我注意到它考虑了这种情况并将大写值放在首位。

我相当肯定它是在某个地方集成.toLowerCase()的问题,但我的所有尝试都失败了。在哪里/如何应用.toLowerCase()来使排序不区分大小写?

js fiddle here

function sortResults(prop, asc) {
    //SORT THE ARRAY BY THE PASSED NODE VALUE...
          myArray.jsonData = myArray.jsonData.sort(function(a, b) {
                if (asc) return (a[prop]> b[prop]) ? 1 : ((a[prop] < b[prop]) ? -1 : 0);
                else return (b[prop] > a[prop]) ? 1 : ((b[prop] < a[prop]) ? -1 : 0);
          });

     showInDOM();   
 }

2 个答案:

答案 0 :(得分:1)

使用函数toLowerCase()并使用+ ""

转换为字符串
myArray.jsonData.sort(function(a, b) {
   var comp = ((a[prop]+"").toLowerCase() >
               (b[prop]+"").toLowerCase()) ? 1 : -1 ;
   return asc ? comp : -comp;
});

答案 1 :(得分:-1)

如果您总是对字符串进行排序,则可以使用:

function(a,b){
   return a.toLowerCase() > b.toLowerCase();
}

在你的例子中将是:

myArray.jsonData.sort(function(a,b){
    var result, 
        av=a[prop].toLowerCase(), 
        bv=b[prop].toLowerCase();
    return asc ? av > bv : av < bv;
}