我有以下对象,每个人的运动得分。这些信息来自数据库,基于搜索" 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中显示结果。
但是,我如何取回相应的名字?此外,我不认为这是最有效的方式,因为如果分数相等,我会遇到问题。所以你可能更好地了解如何做到这一点?
答案 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);