2015-11-06 65 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))

相关问题