我正在创建一个投票系统,并且我有以下对象:
var obj1 = { Mcds: 2, Pret: 2, kfc: 2, BK: 1 }
或者(取决于投票)可能是:
var obj2 = { Mcds: 2, Pret: 2, BK: 3 }
我想要的是显示投票最多的餐厅。
我可以使用以下代码通过 obj2 示例来实现此目的:
var obj2Keys = Object.keys(obj2);
var mostVoted = obj2Keys.reduce(function(previousValue, currentValue){
return obj2[previousValue] > obj2[currentValue] ? previousValue : currentValue;
}); // returns 'BK'
当我在 obj1 示例上使用上述代码时,我得到“kfc”,我想要的是“kfc”“Pret”“Mcds”(排名不分先后)。
最佳答案
您需要将所有获胜的名字累积到一个数组中。当您获得高票并列时,将该元素添加到数组中;当您获得更高的选票时,您将开始一个新的数组。
var obj1 = {
Mcds: 2,
Pret: 2,
kfc: 2,
BK: 1
}
var high_vote = 0;
var winners;
for (var key in obj1) {
if (obj1.hasOwnProperty(key)) {
if (obj1[key] > high_vote) {
winners = [key];
high_vote = obj1[key];
} else if (obj1[key] == high_vote) {
winners.push(key);
}
}
}
alert(winners);
关于javascript - 返回最高值或相等值 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35296817/