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。我没有看到任何关于格式的抱怨,只是关于排序顺序。正如副本所示,我不是唯一一个有这种观点的人