获取对象中具有最高值的键:javascript

时间:2016-03-13 03:48:34

标签: javascript object key key-value

我必须使用javascript对象中的值获得最高键

var obj1 = {a: 1, b: 3, c: 2, d: 4};
var obj2 = {a: 1, b: 3, c: 2, d: 3};

我试过这些代码 代码1

var max = Object.keys(r).reduce(function(a, b){ return r[a] > r[b] ? a : b });

code2

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

CODE3

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

每个代码在obj1的情况下工作正常,返回d因为它的最大值为4 但是如果obj2没有根据我的要求返回值,它只返回一个键但我需要所有具有最高值的键,如果obj2需要b& d因为它们都是最高值4

由于 Dinesh

1 个答案:

答案 0 :(得分:2)

你可以使用underscore.js

这样做
var obj1 = {
  a: 2,
  b: 3,
  c: 2,
  d: 4
};
var obj2 = {
  a: 1,
  b: 3,
  c: 2,
  d: 3
};
//get the max
n = _.max(obj2, function(o) {
  return o;
})
//filter keys with max
j = _.filter(Object.keys(obj2), function(o) {
  return obj2[o] == n
})
//use map to get the key and value in an array
result = j.map(function(d){ return {key:d, value:obj2[d]}})
console.log(result)

工作代码here

使用下划线链here

的另一个选项