对 javascript 中 key:value 对的字典进行排序
Sort dictionary of key:value pairs in javascript
我有一本字典,其中有一些 key:value 对,如下所示。
rank = {
"Team 1" : 34,
"Team 2" : 55,
"Team 3" : 29,
"Team 4" : 61,
...
}
键是球队名称,值是赛季结束时的积分,所以我想根据他们的值对夫妇进行排序,以便打印最终排名。
有人可以帮助我吗?提前致谢
Javascript 中的对象键和值没有内在顺序。在将它们排序为所需顺序之前,您需要将它们存储在有序结构中。
让我们将项目放入 Array
,它确实具有内在顺序:
var object = {
a: 1,
b: 5,
c: 2
}
var keyValues = []
for (var key in object) {
keyValues.push([ key, object[key] ])
}
keyValues
数组现在包含 ['a', 1], ['b', 5], ['c', 2]
。让我们对这个数组进行排序,使用每对中的第二个值进行比较:
keyValues.sort(function compare(kv1, kv2) {
// This comparison function has 3 return cases:
// - Negative number: kv1 should be placed BEFORE kv2
// - Positive number: kv1 should be placed AFTER kv2
// - Zero: they are equal, any order is ok between these 2 items
return kv1[1] - kv2[1]
})
现在 keyValues
从小到大排序。请注意,您不能将其转换回对象,否则顺序将丢失。
我有一本字典,其中有一些 key:value 对,如下所示。
rank = {
"Team 1" : 34,
"Team 2" : 55,
"Team 3" : 29,
"Team 4" : 61,
...
}
键是球队名称,值是赛季结束时的积分,所以我想根据他们的值对夫妇进行排序,以便打印最终排名。
有人可以帮助我吗?提前致谢
Javascript 中的对象键和值没有内在顺序。在将它们排序为所需顺序之前,您需要将它们存储在有序结构中。
让我们将项目放入 Array
,它确实具有内在顺序:
var object = {
a: 1,
b: 5,
c: 2
}
var keyValues = []
for (var key in object) {
keyValues.push([ key, object[key] ])
}
keyValues
数组现在包含 ['a', 1], ['b', 5], ['c', 2]
。让我们对这个数组进行排序,使用每对中的第二个值进行比较:
keyValues.sort(function compare(kv1, kv2) {
// This comparison function has 3 return cases:
// - Negative number: kv1 should be placed BEFORE kv2
// - Positive number: kv1 should be placed AFTER kv2
// - Zero: they are equal, any order is ok between these 2 items
return kv1[1] - kv2[1]
})
现在 keyValues
从小到大排序。请注意,您不能将其转换回对象,否则顺序将丢失。