我们正在开展Mario Kart锦标赛,我想尝试使用基本的JavaScript记录结果。
以下是代码:https://jsbin.com/hafati/44/edit?js,console
我差不多到了那里,但我需要帮助整理结果。
以下是数据的console.log
:
[object Object] {
1: [object Object] {
id: 1,
name: "Player 1",
total: 20
},
2: [object Object] {
id: 2,
name: "Player 2",
total: 60
},
3: [object Object] {
id: 3,
name: "Player 3",
total: 80
},
4: [object Object] {
id: 4,
name: "Player 4",
total: 400
},
5: [object Object] {
id: 5,
name: "Player 5",
total: 150
},
6: [object Object] {
id: 6,
name: "Player 6",
total: 50
}
}
你如何对这些球员进行排序,首先total
最高?
答案 0 :(得分:3)
JavaScript数组函数是多态的,所以你可以在"数组中使用它们"对象就好了:
var obj = { 0 : {total: 3}, 1 : {total: 1}, 2 : {total: 5}}; // your object
obj.length = 2; // need to set this manually.
var sorted = [].sort.call(obj, function(x,y){ return x.total - y.total; });
也就是说,最好将顺序数据存储在像阵列这样的顺序数据结构中 - 所以尽管这样做起来并不是最好的主意。我假设你没有选择:)
答案 1 :(得分:1)
您需要将数据存储在对象数组中,这将比对象更容易迭代数组,并且还确保元素的顺序。然后,您可以使用数组sort
函数对数组元素进行排序。
var myArr = [{
id: 1,
name: "Player 1",
total: 20
}, {
id: 2,
name: "Player 2",
total: 60
}, {
id: 3,
name: "Player 3",
total: 80
}, {
id: 4,
name: "Player 4",
total: 400
}, {
id: 5,
name: "Player 5",
total: 150
}, {
id: 6,
name: "Player 6",
total: 50
}];
myArr.sort(function(a, b) {
return a.total < b.total;
});
console.log(myArr);
&#13;
答案 2 :(得分:0)
将它们放在一个数组中:
var score = [{
id: 1,
name: "Player 1",
total: 20
},{
id: 2,
name: "Player 2",
total: 60
},
...
}];
然后使用Array.sort()
:
score.sort(function (a, b) {
return a.total < b.total;
});