2015-01-14 35 views
0

我想创建,将采取以下两个阵列的功能:(数据填充其他地方)排序两个数组失败的两位数字

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,其余的是单个数字的数字,则二十的值被排序为scoreImport [0],也被称为最低值。

我怎样才能得到这个函数来理解排序单个和两个数字值?面对这个挑战时,它似乎崩溃了。

希望你能得到我想解释的东西。

很多人提前感谢。

+2

要排序为字符串我想,这样“20”是不是“3”小! – surajck

+0

你可以把一些示例值,而不是只是空的字符串?问题可能在于它们是字符串而不是数字,因此“9”大于“11”。可以将它们每次存储为数字或'parseInt()' – Rhumborl

回答

0

看起来你的值按字符串排序,你可能知道"20" < "3"。在比较之前将这些值转换为Number s。例如+valueNumber(value)parseInt(value,10)

0

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

你可以...

  1. 垫零存储的值,即 “01”, “20” 会排序正确。
  2. 转换为数字值,在某些点排序之前,使用parseInt(number, 10);