Javascript 按值对对象重新排序,但保留键和值
我有一个目标:Javascript 按值对对象重新排序,但保留键和值,javascript,arrays,sorting,object,Javascript,Arrays,Sorting,Object,我有一个目标: teamTotalChances = { AFC Wimbledon: 71.43, Accrington Stanley: 28.57, Barnsley: 64.28999999999999, Birmingham City: 114.28, Blackburn Rovers: 71.43 } 我想按值(从高到低)排序,这样就可以: teamTotalChances = { Birmingham City: 114.28, AFC Wimbled
teamTotalChances = {
AFC Wimbledon: 71.43,
Accrington Stanley: 28.57,
Barnsley: 64.28999999999999,
Birmingham City: 114.28,
Blackburn Rovers: 71.43
}
我想按值(从高到低)排序,这样就可以:
teamTotalChances = {
Birmingham City: 114.28,
AFC Wimbledon: 71.43,
Blackburn Rovers: 71.43,
Barnsley: 64.28999999999999,
Accrington Stanley: 28.57
}
我尝试了一些方法,包括Object.keys
和Array.from
,但我无法让它显示key和value。在我用正确的键订购的那一刻,值丢失了:
keysSorted = Object.keys(teamTotalChances).sort(function(a,b){return
teamTotalChances[b]-teamTotalChances[a]});
keySorted
是一个如下所示的数组:
keySorted = [
0: "Birmingham City",
1: "AFC Wimbledon",
2: "Blackburn Rovers",
3: "Barnsley",
4: "Accrington Stanley"
]
所以顺序是正确的,但我丢失了数值
谢谢。此输出表示法适合您吗
[
["Birmingham City", 114.28],
["AFC Wimbledon", 71.43],
["Blackburn Rovers", 71.43],
["Barnsley", 64.28999999999999],
["Accrington Stanley", 28.57]
]
如果是,则可能是代码:
let teamTotalChances = {
"AFC Wimbledon": 71.43,
"Accrington Stanley": 28.57,
Barnsley: 64.28999999999999,
"Birmingham City": 114.28,
"Blackburn Rovers": 71.43
}
console.log(Object.entries(teamTotalChances).sort((a, b) => b[1] - a[1]))
这种输出表示法适合您吗
[
["Birmingham City", 114.28],
["AFC Wimbledon", 71.43],
["Blackburn Rovers", 71.43],
["Barnsley", 64.28999999999999],
["Accrington Stanley", 28.57]
]
如果是,则可能是代码:
let teamTotalChances = {
"AFC Wimbledon": 71.43,
"Accrington Stanley": 28.57,
Barnsley: 64.28999999999999,
"Birmingham City": 114.28,
"Blackburn Rovers": 71.43
}
console.log(Object.entries(teamTotalChances).sort((a, b) => b[1] - a[1]))
您需要将它们转换为可管理的源。我所做的是首先将每个数组转换为键/值对象数组,然后将该数组从最高到最低排序
让teamTotalOpportunities={
“AFC温布尔登”:71.43,
“阿克林顿斯坦利”:28.57,
“巴恩斯利”:64.289999999,
“伯明翰市”:114.28,
“布莱克本流浪者”:71.43
}
让result=Object.keys(teamTotalChances).map(itm=>{return{key:itm,value:teamTotalChances[itm]})
console.log(result.sort((a,b)=>b.value-a.value))
您需要将它们转换为可管理的源代码。我所做的是首先将每个数组转换为键/值对象数组,然后将该数组从最高到最低排序
让teamTotalOpportunities={
“AFC温布尔登”:71.43,
“阿克林顿斯坦利”:28.57,
“巴恩斯利”:64.289999999,
“伯明翰市”:114.28,
“布莱克本流浪者”:71.43
}
让result=Object.keys(teamTotalChances).map(itm=>{return{key:itm,value:teamTotalChances[itm]})
console.log(result.sort((a,b)=>b.value-a.value))
对象没有顺序。Object.entries并对其进行排序,或者按值对键进行排序,然后使用该键数组引用对象中的值。为什么?您的用例是什么?我认为您希望有一个对象数组并对其进行排序。对象的可能副本没有顺序。Object.entries并对其进行排序,或者按值对键进行排序,然后使用该键数组引用对象中的值。为什么?您的用例是什么?我认为您希望有一个对象数组并对其进行排序。是的,是的,它可能重复!给其他人留个便条,先用最小值排序,所以我只交换了b[1]和a[1]。然后我循环遍历这个数组,如下所示:teamEntries.forEach(函数(团队){console.log(团队[0]+“”+team[1]);});是的,是的!给其他人留个便条,先用最小值排序,所以我只交换了b[1]和a[1]。然后我循环遍历这个数组,如下所示:teamEntries.forEach(函数(团队){console.log(团队[0]+“”+team[1]);});是的,太完美了!谢谢,太好了!谢谢