我有一个有一些价值的物品。
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 } ]
感谢任何帮助。
答案 0 :(得分:0)
您也可以使用相同的属性值对键进行排序。
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 },
order = Object
.keys(x)
.sort((a, b) => x[b] - x[a] || a.localeCompare(b));
// ^^^^^^^^^^^ value part
// ^^^^^^^^^^^^^^^^^^ key part
console.log(order);