pinouchon pinouchon - 5 months ago 14
Javascript Question

How to find the key of the min value in a hash with underscore

I would like to find the key of a minimum value with underscore. For example:

var my_hash = {'0-0' : {value: 23, info: 'some info'},
'0-23' : {value: 8, info: 'some other info'},
'0-54' : {value: 54, info: 'some other info'},
'0-44' : {value: 34, info: 'some other info'}
}
find_min_key(my_hash); => '0-23'


How can I do that with underscorejs ?

I've tried:

_.min(my_hash, function(r){
return r.value;
});
# I have an object with the row, but not it's key
# => Object {value: 8, info: "some other info"}


I also try to sort it (and then getting the first element):

_.sortBy(my_hash, function(r){
return r.value;
})


But it returns an array with numerical indexes, so my hash keys are lost.

Answer

With Underscore or Lodash < 4:

_.min(_.keys(my_hash), function(k) { return my_hash[k].value; }); //=> 0-23

With Lodash >= 4:

_.minBy(_.keys(my_hash), function(k) { return my_hash[k].value; }); //=> 0-23

Comments