2017-03-02 165 views
0

大家好我需要一個函數,以便我可以按特定屬性值按字母順序排列對象數組。按屬性排序對象的數組

讓說,我有此數組:

var myObj = [{Name: 'John'}, 
      {Name: 2.10}, 
      {Name: 'Andrew'}, 
      {Name: 10}, 
      {Name: 2.101} 
      ]; 

結果應該是2.10,2.101,10, '安德魯', '約翰'。我需要這在我的程序東陽排序Name屬性可以是一個名字爲「約翰」或與IP(如1.0.0.14),甚至MAC地址(97948453855)...

我管理了一些,但排序它似乎不適用於字符串和數字。

謝謝!

+1

你是什麼排序的依據是什麼?算法? – mehulmpt

+0

顯示您嘗試的內容,以便我們可以看到您出錯的位置。 – epascarello

+0

請提供您的代碼。 –

回答

3

您可以檢查字符串並使用delta作爲第一個結果部分,或者採用數字delta或最後字符串比較。

var array = [{ Name: 'John' }, { Name: 2.10 }, { Name: 'Andrew' }, { Name: 10 }, { Name: 2.101 }]; 
 
      
 
array.sort(function (a, b) { 
 
    return (typeof a.Name === 'string') - (typeof b.Name === 'string') || a.Name - b.Name || a.Name.localeCompare(b.Name); 
 
}); 
 

 
console.log(array);

+0

完美地工作,非常感謝你! –