javascript - 如何比较对象中的元素并返回较高的值? *Javascript*

标签 javascript loops object for-in-loop

我正在尝试比较 Javascript 对象中的两个元素。具有最高值(value)的字母应与其携带的数字一起返回。

这是对象,我们应该返回 a 和 39。

obj({a:39,b:21,c:12,d:4}) // should return a : 39

到目前为止,这是我的代码。

let obj = object => {

  for(let i in object) { // i  represents the "key" of the objects, a,b,c,d
    if(object[i] > object[i + 1]) { // object[i] represents the "value" held 39,21,12,4
      console.log(i + ":" + object[i]);
    } else {
      console.log(i + ":" + object[i]);
    }
  }
}

obj({a:39,b:21,c:12,d:4})

我认为 if 语句中的 object[i + 1] 会将下一个索引元素与当前元素进行比较,但事实并非如此,您将如何实现这一点?

编辑 如果有两个元素具有相同的值则返回这两个元素

对于像我这样刚接触编码的人来说,这可能是完成此任务的最简单方法。此代码返回对象中保存的最大数字。

let getMax = (obj) => {
  let highestValue = 0;
  for(var i in obj) {
    if(highestValue < obj[i]) {
      highestValue = obj[i];
    } else if (highestValue == obj[i]) {
      highestValue = highestValue + " " + obj[i];
    }
  }
  alert(highestValue);
}
getMax({John:300000,Kary:360000,David:2700000,Michelle:2700000})

最佳答案

在每次迭代中检查当前或先前的键值是否最大,并存储。将最大的存储在 largest 变量中。最后返回largest变量,它的值是(object[largest]):

let obj = object => {
  let largest;
  for(const i in object) { // i  represents the "key" of the objects, a,b,c,d
    if(!largest || object[i] > object[largest]) {
      largest = i;
    }
  }
  
  return { [largest]: object[largest] };
}

console.log(obj({a:39,b:21,c:12,d:4}));

建议的解决方案:

使用Object.entries()获取键|值对。用 Array.reduce() 迭代,选择具有最高值(索引 1)的对。 Destructure reduce 的结果(包含 [key, value] 的数组)转换为 key 和 value 常量,并使用它们构建返回对象。

const obj = (object) => {
  const [key, value] = Object.entries(object)
    .reduce((r, e) => e[1] > r[1] ? e : r);
  return { [key]: value };
};
  
console.log(obj({a:39,b:21,c:12,d:4}));

关于javascript - 如何比较对象中的元素并返回较高的值? *Javascript*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49700475/

相关文章:

javascript - raphael js .serialize() 我得到空数组

javascript - 是否有任何关于让 HTML5 Canvas 在 IE9 中工作的提示?

android - Android中通过MySql迭代ListView

python all() 迭代字符串

php - 将 mySQL 结果拆分为两个 <div> 并限制为 4

c# - 自定义 C# 对象是否可以包含与其自身类型相同的属性?

javascript - 避免将 lib 依赖项与 webpack + handlebars loader 捆绑在一起

javascript - 表达 cookieParser() 困惑

javascript - 将对象数组按最新日期排序

javascript - 使用 foreach 内部对象创建对象