2014-02-06 198 views
0

我使用下列函数对数组进行排序。按字母顺序排列数组

var trArr = [{'Abc', 1}, {'ACd', 3}, {'Aab', 4}]; 

function compare(a,b) { 
      if (a.name > b.name) 
      { 
       return -1; 
      } 
      if (a.name < b.name) 
      { 
       return 1; 
      } 

      return 0; 
} 

trArr.sort(compare); 

结果:

[{'ACd', 3}, {'Aab', 4}, {'Abc', 1}]; 

上述结果是由于资本 'C'

我需要以下结果:

[{'Aab', 4}, {'Abc', 1}, {'ACd', 3}]; 
+1

'.name.toLowerCase()' – leaf

回答

0

试试这个

var trArr = [{ 
    name: 'Abc', 
    id: 1 
}, { 
    name: 'ACd', 
    id: 3 
}, { 
    name: 'Aab', 
    id: 4 
}]; 

function compare(a, b) { 
    if (a.name.toLowerCase() < b.name.toLowerCase()) { 
     return -1; 
    } 
    if (a.name.toLowerCase() > b.name.toLowerCase()) { 
     return 1; 
    } 
    return 0; 
} 

trArr.sort(compare); 
console.log(trArr) 

DEMO

+0

很好的解决谢谢 –

0

使用尝试toLowerCase

function compare(a, b) { 
    if (a.name.toLowerCase() > b.name.toLowerCase()) { 
     return -1; 
    } 
    if (a.name.toLowerCase() < b.name.toLowerCase()) { 
     return 1; 
    } 
    return 0; 
}