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:
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));