我想对数组进行排序
var highscores = [
{Username: "joba_gm11", Score: "20"},
{Username: "nika.jobava45", Score: "20"},
{Username: "trollgamer481", Score: "100"},
{Username: "Gimira", Score: "20"},
{Username: "dirtytank481", Score: "50"},
];
使用此代码:
for (var i = 0; i < highscores; i++) {
for (var j = 0; j < highscores; j++) {
if (highscores[i].Score < highscores[j].Score) {
var temp = highscores[i];
highscores[i] = highscores[j];
highscores[j] = temp;
}
}
}
但它不起作用。 有什么想法吗?
答案 0 :(得分:1)
在比较分数之前,您可能需要将分数转换为数字。将它们作为字符串进行比较是按字母顺序进行比较。
答案 1 :(得分:1)
您可以使用 +
在 JavaScript 中将字符串转换为数字。
假设您正在尝试使用当前代码实现冒泡排序:
const highscores = [
{
"Username": "joba_gm11",
"Score": "20"
},
{
"Username": "nika.jobava45",
"Score": "20"
},
{
"Username": "trollgamer481",
"Score": "100"
},
{
"Username": "Gimira",
"Score": "20"
},
{
"Username": "dirtytank481",
"Score": "50"
}
];
let sorted = false;
while (!sorted) {
sorted = true;
for (let i = 1; i < highscores.length; i++) {
if (+highscores[i - 1].Score > +highscores[i].Score) {
sorted = false;
let temp = highscores[i - 1];
highscores[i - 1] = highscores[i];
highscores[i] = temp;
}
}
}
console.log(highscores);
如果允许您使用更高效的内置排序:
const highscores = [
{
"Username": "joba_gm11",
"Score": "20"
},
{
"Username": "nika.jobava45",
"Score": "20"
},
{
"Username": "trollgamer481",
"Score": "100"
},
{
"Username": "Gimira",
"Score": "20"
},
{
"Username": "dirtytank481",
"Score": "50"
}
];
highscores.sort((a, b) => +a.Score - (+b.Score));
console.log(highscores);