Javascript 排序函数用于中断序列

Javascript 排序函数用于中断序列,javascript,Javascript,我有一个对象,它有一些值 var x = { 'A': 4.5, 'B': 2, 'C': 4.5, 'D': 2, 'E': 2, 'F': 2, 'G': 2, 'H': 4.5, 'I': 2.5, 'J': 2.5, 'K': 2.5,

我有一个对象,它有一些值

var x = {  
           'A': 4.5,
           'B': 2,
           'C': 4.5,
           'D': 2,
           'E': 2,
           'F': 2,
           'G': 2,
           'H': 4.5,
           'I': 2.5,
           'J': 2.5,
           'K': 2.5,
           'L': 2.5,
           'M': 2.5,
           'N': 2.5,
           'O': 2.5,
           'P': 2.5 
        }
现在我想用正确的键值序列对它进行排序。期望的结果应该是这样的

{  
               'A': 4.5,
               'H': 4.5,
               'I': 2.5,
               'J': 2.5,
               'K': 2.5,
               'L': 2.5,
               'M': 2.5,
               'N': 2.5,
               'O': 2.5,
               'P': 2.5,
               'B': 2,
               'D': 2,
               'E': 2,
               'F': 2,
               'G': 2,
            }
我试图这样做,但我无法按顺序对结果进行排序。我的代码是

const valueholder = Object.keys(x).map(key => ({ name: key, value: x[key] })).sort((f, s) => s.value - f.value);
按此值排序,但不按顺序排序。我得到的是这个

[ { name: 'A', value: 4.5 },
  { name: 'C', value: 4.5 },
  { name: 'H', value: 4.5 },
  { name: 'O', value: 2.5 },
  { name: 'N', value: 2.5 },
  { name: 'M', value: 2.5 },
  { name: 'L', value: 2.5 },
  { name: 'P', value: 2.5 },
  { name: 'K', value: 2.5 },
  { name: 'J', value: 2.5 },
  { name: 'I', value: 2.5 },
  { name: 'B', value: 2 },
  { name: 'G', value: 2 },
  { name: 'F', value: 2 },
  { name: 'E', value: 2 },
  { name: 'D', value: 2 } ]

非常感谢您的帮助。

您也可以使用相同的属性值对键进行排序

var x={A:4.5,B:2,C:4.5,D:2,E:2,F:2,G:2,H:4.5,I:2.5,J:2.5,K:2.5,L:2.5,M:2.5,N:2.5,O:2.5,P:2.5},
顺序=对象
.钥匙(x)
.sort((a,b)=>x[b]-x[a]| | a.localeCompare(b));
//^^^^^^^^^^^^值部分
//^^^^^^^^^^^^^^^^^^^^^关键部分

控制台日志(订单)不仅按值排序,而且按name@AndreasOP希望对对象的值进行排序,而不是将其转换为
数组
@gurvinder372”,因为此值是排序,但不是按顺序排列的“@Andreas OP也共享了所需的结果。@gurvinder372 1。对象的属性没有顺序(已添加的属性除外)2。我没有看到任何关于格式的抱怨,只是关于排序顺序。正如副本所示,我不是唯一一个有这种观点的人