javascript - 返回最高值或相等值 javascript

标签 javascript arrays sorting object

我正在创建一个投票系统,并且我有以下对象:

var obj1 = { Mcds: 2, Pret: 2, kfc: 2, BK: 1 }

或者(取决于投票)可能是:

var obj2 = { Mcds: 2, Pret: 2, BK: 3 }

我想要的是显示投票最多的餐厅。

我可以使用以下代码通过 o​​bj2 示例来实现此目的:

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/

相关文章:

PHP mysql 从大到小排序

javascript - axios ajax调用有时返回html

javascript - 将按钮设置为单击时激活?

c# - 如何在使用数组的 C# 互操作调用中通过引用访问基于 C 的指针?

javascript - mongoDB:获取数组对象的字段值

javascript - 将 php 数组转换为 javascript 数组

php - 如何根据php中的日期列对mysql结果数组进行降序排序?

javascript - srihash.org 不适用于 cesiumjs.org 中的 .js 文件

javascript - 这个语法: {variable1,variable2,variable3}是什么?

sorting - Elasticsearch 对字符串进行排序未返回预期结果