2015-11-06 66 views
1

如何按年齡值對對象進行排序?如何在JavaScript中對多維對象進行排序

我有以下對象結構

{ 
    "men": { 
     "20114": { 
      "id": "20114", 
      "name": "Peter", 
      "age": "21" 
     }, 
     "28957": { 
      "id": "28957", 
      "name": "Paul", 
      "age": "20" 
     } 
    }, 
    "women": { 
     "8957": { 
      "id": "8957", 
      "name": "Rose", 
      "age": "24" 
     }, 
     "2178": { 
      "id": "2178", 
      "name": "Sara", 
      "age": "22" 
     } 
    }, 
} 

我知道,我可以排序像這樣

groups.sort(function(a, b) { 
    return b.age - a.age; 
}); 

但如何陣列與對象做到這一點?

+8

你不能,對象鍵沒有定義的順序。您必須將對象傳遞給數組,或者使用鍵創建一個新數組並根據對象數據進行排序 – juvian

+0

正如@juvian所說,對象沒有爲它們定義的順序。所以你會想把''男人''和''女人'''換成對象數組,然後用上面的方法進行排序。 –

+0

我同意@juvian。你可以有一個'gender'屬性來創建一個數組。 – Jaco

回答

0
function sortfunc(prop){ 
       return function(obj1,obj2){ 
       var val1 = obj1[prop]; 
       var val2 = obj2[prop]; 

      return val1 - val2; 

     }; 
} 

groups.sort(sortfunc(prop)); 

prop物業名稱

+2

請再次閱讀這個問題,OP知道如何對數組進行排序。他們已經有了這個方法。 –

0

這將是一個更容易的數據是否可以將結構變更爲下面的JSON模式排序:

var data = [ 
 
    { 
 
     "id": "20114", 
 
     "name": "Peter", 
 
     "age": "21", 
 
     "gender": "men" 
 
    }, 
 
    { 
 
     "id": "28957", 
 
     "name": "Paul", 
 
     "age": "20", 
 
     "gender": "men" 
 
    }, 
 
    { 
 
     "id": "8957", 
 
     "name": "Rose", 
 
     "age": "24", 
 
     "gender": "women" 
 
    }, 
 
    { 
 
     "id": "2178", 
 
     "name": "Sara", 
 
     "age": "22", 
 
     "gender": "women" 
 
    } 
 
] 
 

 
data.sort(function(a, b) { 
 
    return parseFloat(a.age) - parseFloat(b.age); 
 
}); 
 

 
data.sort() 
 

 

 
document.write(JSON.stringify(data))

相關問題