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

疯狂-D

我很想知道一种打印key具有最大值的方法。下面是几个条件,

  • 如果我们在所有键中都有最大值,则返回该值。示例:返回c及其值4来自{a: 2, b:1, c:4, d:1}
  • 如果我们有两个键具有相同的值并且它们是最大值,则返回它们的值。示例:returnabwith value 4from{ a: 4, b: 4, c:2, d:1 }
  • 在上述条件下,订单应该是athen c
  • 如果所有键都具有相同的值,则返回 false 或零或除 1 以外的其他值。例子:{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);

注意:如果您告诉我为什么-ve投票,我将不胜感激

哈桑·伊玛目

您可以使用array#reducewithObject.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 }));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章