对两个数组进行排序在两位数字上失败
sorting two arrays fails on two digit numbers
我正在尝试创建一个函数,该函数将采用以下两个数组:(数据在其他地方填写)
var playerImport = []
playerImport[0] = "";
playerImport[1] = "";
playerImport[2] = "";
playerImport[3] = "";
playerImport[4] = "";
var scoreImport = []
scoreImport[0] = "";
scoreImport[1] = "";
scoreImport[2] = "";
scoreImport[3] = "";
scoreImport[4] = "";
并将两个数组排序在一起。
例如,scoreImport[0] 是最低值,一旦排序,应该随身携带 playerImport[0]。
我目前将此作为我的功能。
function sortHighscores(a, b)
var swapped;
do {
swapped = false;
for (var i=0; i < a.length-1; i++) {
if (a[i] > a[i+1])
{
var temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
var temp = b[i];
b[i] = b[i+1];
b[i+1] = temp;
swapped = true;
}
}
} while (swapped);
虽然这有效,但如果我尝试对两个数组进行排序,并且一个或多个 scoreImport 包含两位数,而其余部分包含一个数字,它只是将其直接放在底部并且无法正确排序。例如,如果 scoreImport[4] = 20 并且其余为个位数数字,则 20 的值将排序为 scoreImport[0],也称为最小值。
如何让此函数理解对一位和两位数值的排序?面对这一挑战,它似乎崩溃了。
希望你明白我想要解释的内容。
提前非常感谢。
似乎您的值被排序为字符串,您可能知道"20" < "3"
.在比较之前将值转换为 Number
s。例如+value
或Number(value)
或parseInt(value,10)
您正在对字符串进行排序,因此顺序在数字上不匹配。
您可以。。。
- 用
- 零填充存储的值,即"01"、"20"将正确排序。
- 在排序前的某个时间点转换为数值,请使用
parseInt(number, 10);
相关文章:
- 将数字四舍五入到小数点后两位
- 将数字四舍五入到小数点后两位,以设置货币格式
- 将数字四舍五入到两位小数
- 在数字字符串的最后两个数字上加上小数
- JS Regex的最后两位数字与前两位数字匹配
- 对两个数组进行排序在两位数字上失败
- 从谷歌 v3 API 响应中检索前两位数字
- JavaScript 整数到前两位数字
- 将字符串拆分为具有交替一位和两位数字的数组
- 两位数字后的空格,例如:03 9876 6544
- JavaScript初学者-需要检查邮政编码的前两位数字
- 文本框中带有JavaScript onkeypress事件的点后两位数字
- 根据文本字段的11位数字的前两位数字选择下拉值
- getMinutes() 0-9 - 如何显示两位数字
- 如何使用tickFormat只显示年份(以世纪和最后两位数字表示)
- 从电话号码中提取两位数字的正则表达式
- 如何在html中显示var值为十进制后的两位数字
- 如何防止键盘按下小数后两位数字
- 获取字符串的前两位数字,支持负数'数字'
- 用两位数字更新输入(type="Number")