我有以下目的,针对每个人的各项运动要点。该信息来自数据库,基于对“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);