在两位数字上排序两个数组失败

时间:2015-01-14 11:39:28

标签: javascript arrays sorting

我正在尝试创建一个将采用以下两个数组的函数:(数据在其他地方填充)

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],也称为最低值。

如何让这个函数理解单个和两位数值的排序?面对这一挑战时似乎崩溃了。

希望你能得到我想解释的内容。

许多人提前感谢。

2 个答案:

答案 0 :(得分:0)

您的值似乎按字符串排序,您可能知道"20" < "3"。在比较它们之前,将值转换为Number s。例如+valueNumber(value)parseInt(value,10)

答案 1 :(得分:0)

您正在排序字符串,因此订单数字不匹配。

你可以......

  1. 将存储的值填充为零,即&#34; 01&#34;,&#34; 20&#34;会正确排序。
  2. 在排序前的某个时刻转换为数值,使用parseInt(number, 10);