javascript - 找到持有键的最大值,从而从 JavaScript 中的键/值对中进行绘制

标签 javascript ecmascript-6

我有兴趣知道如何打印保存最大值的key。以下是一些条件,

  • 如果我们有所有键中的最大值,则返回该值。示例:返回 c 及其值 4 来自 {a: 2, b:1, c:4, d:1}
  • 如果我们有两个键具有相同的值并且它们是最大值,则返回两个键及其值。示例:从 { a: 4, b: 4, c:2, d:1 返回值为 4ab }
  • 在上述情况下,顺序应为 a 然后 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#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 }));

关于javascript - 找到持有键的最大值,从而从 JavaScript 中的键/值对中进行绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54176712/

相关文章:

javascript - 如何从js文件中不导出任何内容?

javascript - 在 JS 中如何获取特定 cookie(通过搜索其值)是否存在的信息?

javascript - jQuery 无限滚动/延迟加载

javascript - meteorjs 如何将字符串名称作为函数?

javascript - ES6 Uncaught TypeError : Object(. ..) 不是函数

javascript - ES6 类和类实例作为构造函数中的参数

javascript - 按值比较数组中的所有对象

javascript - 我如何用 Jest 来模拟异步提取?

javascript - 使用 WebRTC 将数据与视频同步

javascript - 页面重新加载时,加载第一张幻灯片