我有以下目的,针对每个人的各项运动要点。该信息来自数据库,基于对“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数组进行排序并可以使用例如HTML中的ngFor显示结果。

但是,我将如何找回相应的名称?我也不认为这是最有效的方法,因为如果分数相等,我就会遇到问题。那么,您是否有更好的主意该怎么做?

最佳答案

您可以使用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);

10-02 20:38