gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:24:30 26 4
gpt4 key购买 nike

我正在尝试比较 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com