【发布时间】:2018-04-06 20:20:23
【问题描述】:
我正在尝试在 Javascript 中比较一个对象内的两个元素。具有最高值的字母应连同其携带的数字一起返回。
这是对象,我们应该返回 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] 会将下一个索引元素与当前元素进行比较,但事实并非如此,您将如何实现呢?
EDIT 如果有两个元素的值相同,则返回两个元素
对于像我这样的编码新手来说,这可能是最简单的方法。此代码返回对象中保存的最大数字。
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})
【问题讨论】:
-
您可能想使用
Object.keys()并将它们作为数组进行迭代。然后,您可以将i+1作为下一个键的索引向前看。显然,请确保您不要越过键数组的末尾。 -
超过一个 max 属性会发生什么?
-
感谢 veddermatic。我想知道如何像数组一样向前看。你把它清理干净了:)
-
好问题尼娜。如果超过一个 max 属性,则返回两者。我会尝试编辑问题。
-
为什么你认为
object[i + 1]会比较下一个元素?当i是"a"时i + 1是"a1",而不是"b"。它是一个对象,而不是一个数组。
标签: javascript loops object for-in-loop