Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按值对对象重新排序,但保留键和值_Javascript_Arrays_Sorting_Object - Fatal编程技术网

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]);});是的,太完美了!谢谢,太好了!谢谢