在javascript中找到导致键/值对绘制的最大值保持键

时间:2019-01-14 06:34:16

标签: javascript ecmascript-6

我想知道一种打印保留最大值的key的方法。以下是一些条件,

  • 如果所有键中都有最大值,则返回该值。示例:返回 c,其值为4中的{a: 2, b:1, c:4, d:1}
  • 如果我们有两个键具有相同的值,并且它们是最大值,则返回两个值。示例:从a
  • 返回值b的{​​{1}}和4
  • 在上述条件下,顺序应为{ a: 4, b: 4, c:2, d:1 },然后依次为a
  • 如果所有键都具有相同的值,则返回false或0或非1的值。示例:c

代码块:

{a: 1, b:1, c:1, d:1}

注意:如果您告诉我为什么进行let obj = { a: 4, b: 4, c: 2, d: 1 }; let maxValueKey = Object.keys(obj).reduce((a, b) => obj[a] > obj[b] ? a : b); console.log(maxValueKey);投票,将不胜感激?

2 个答案:

答案 0 :(得分:4)

您可以将array#reduceObject.keys()一起使用,以找到最大值密钥并将其存储在数组中。

let maxValueKey = (o) => Object.keys(o).reduce((a, k, i, keys) => {
  if (!i || a.value < o [k]) {
    a.max.length = 0;
    a.max.push(k);
    a.value = o[k];
  } else if (a.value === o[k]) {
    a.max.push(k);
  }
  
  if (a.max.length === keys.length) {
    a.max.length = 0;
    a.value = 'All equal';
  }
  
  return a;
}, {max : [], value: undefined});
console.log(maxValueKey({ a: 4, b: 4, c:2, d:1 }));
console.log(maxValueKey({ a: 1, b:1, c:1, d:1 }));
console.log(maxValueKey({ a: 2, b:1, c:4, d:1 }));
console.log(maxValueKey({ a: 2, b:1 }));

答案 1 :(得分:1)

这可以-

let obj = { a: 4, b: 4, c:2, d:1 }   
var maxValueKey = Object.keys(obj).reduce((a, b) => obj[a] > obj[b] ? a : b);
var t=[];
var e=Object.keys(obj);
e.forEach((r)=>{

if(obj[r]==obj[maxValueKey])
t.push(r);
})
alert(t)