Obtenir la clé avec la valeur la plus élevée de l'objet

J'ai un objet comme celui-là:

Object {a: 1, b: 2, undefined: 1} 

Comment puis-je tirer rapidement l'identifiant de la plus grande valeur (ici: b )? J'ai essayé de le convertir en tableau et ensuite de tri, mais cela n'a pas fonctionné, puisqu'il a été trié par ordre alphabétique (et il semble que l'on s'entraine pour faire du mal à des données d'avant en arrière simplement pour obtenir une valeur sur trois).

Par exemple:

 var obj = {a: 1, b: 2, undefined: 1}; Object.keys(obj).reduce(function(a, b){ return obj[a] > obj[b] ? a : b }); 

Utiliser Underscore ou Lo-Dash:

 var maxKey = _.max(Object.keys(obj), function (o) { return obj[o]; }); 

Démo jsFiddle:

http://jsfiddle.net/jt631Lcc/

Supposons que vous ayez un Object comme ceci:

 var obj = {a: 1, b: 2, undefined: 1} 

Tu peux le faire

 var max = Math.max.apply(null,Object.keys(obj).map(function(x){ return obj[x] })); console.log(Object.keys(obj).filter(function(x){ return obj[x] == max; })[0]); 

Méthode très basique. Pourrait être lent à traiter

 var v = {a: 1, b: 2, undefined: 1}; function geth(o){ var vals = []; for(var i in o){ vals.push(o[i]); } var max = Math.max.apply(null, vals); for(var i in o){ if(o[i] == max){ return i; } } } console.log(geth(v));