过滤对象中的最高数字

时间:2018-04-13 13:26:08

标签: javascript ionic-framework ionic3

我有以下对象,每个人的运动得分。这些信息来自数据库,基于搜索" Jack Miller"

Jdata = {
    "name": "Jack Miller",
    "sports": {
        "Basketball": 2,
        "Football": 3,
        "Iceskating": 5,
        "Running": 4,
    }
}

我想在HTML页面上显示名称的前2(3)项运动。做到这一点,我正在考虑将信息提取到这样的数组中:

SportVal = [];
SportNames = [];

for(var key in this.Jdata.sports){
    if(!this.Jdata.sports.hasOwnProperty(key)){
        continue;
    }
    this.SportVal.push(this.Jdata.scores[key]);
    this.SportNames.push(key)
}

然后我必须按降序对SportVal数组进行排序,并且可以使用例如ngFor在HTML中显示结果。

但是,我如何取回相应的名字?此外,我不认为这是最有效的方式,因为如果分数相等,我会遇到问题。所以你可能更好地了解如何做到这一点?

1 个答案:

答案 0 :(得分:6)

您可以使用Array.prototype.sort()来执行此操作。

Jdata = {
"name": "Jack Miller",
"sports": {
    "Basketball": 2,
    "Football": 3,
    "Iceskating": 5,
    "Running": 4,
}
}

const sorted = Object.entries(Jdata.sports)
      .sort((a, b) => b[1] - a[1])
      .slice(0, 3)
      .map((pair) => pair[0]);

console.log(sorted);