2014-02-12 83 views
0

我有一個javascript代碼,用於在排序值後爲HTML中的表生成值。起初,我在JavaScript代碼的開始處手動輸入了值的數組。它就像:names = [tom,jerry,mickey,mouse];等級= [10,20,30,40]。然後對它們進行排序並在表中寫入值。它工作完美。Javascript數組參數不起作用

grades=[10,20,30,40]; 
var swapped; 
     do { 
      swapped = false; 
      for (var i=0; i < grades.length-1; i++) { 
       if (grades[i] > grades[i+1]) { 
        var temp = grades[i]; 
        grades[i] = grades[i+1]; 
        grades[i+1] = temp; 
        swapped = true; 
       } 
      } 
     } while (swapped); 
    for(j=0;j<grades.length-1;j++) 
    myTable.rows[j].cells[1].innerHTML = grades[i-1]; 
    } 

但現在我必須將其轉換爲函數。我試過這樣:

function table(names,grades){ 
var swapped; 
    do { 
     swapped = false; 
     for (var i=0; i < grades.length-1; i++) { 
      if (grades[i] > grades[i+1]) { 
       var temp = grades[i]; 
       grades[i] = grades[i+1]; 
       grades[i+1] = temp; 
       swapped = true; 
      } 
     } 
    } while (swapped); 
for(j=0;j<grades.length-1;j++) 
myTable.rows[j].cells[1].innerHTML = grades[i-1]; 
} 

但它不起作用。我試圖這樣調用它:

table([tom,jerry,mickey,mouse],[10,20,30,40]); 

但它不起作用。該表是空的。問題是什麼?

謝謝。

+1

我還沒有看到年齡中的'do..while'循環。你的問題帶回了我對帕斯卡爾......重複......「重複......」日子的記憶!任何錯誤消息/你可以提供一個http://jsfiddle.net/? –

+2

看看控制檯有什麼錯誤? – epascarello

+1

提示:[數組確實有'sort'方法](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort):-) – Bergi

回答

1

表爲空。問題是什麼?

我們不知道,尤其是你剛纔說的「這一部分的工作好」。

問題是,即使在調用像這樣的函數之後,數組沒有與以前相同的值。

當然,你已經交換了他們的值:-)如果你不想修改最初傳遞的數組,你將不得不復制它們之前。您可以使用slice method此:

function table(names,grades,table){ 
    var swapped; 
    names = names.slice(); 
    grades = grades.slice(); 
    do { 
     swapped = false; 
     for (var i=0; i < grades.length-1; i++) { 
      if (grades[i] > grades[i+1]) { 
       var temp = grades[i]; 
       grades[i] = grades[i+1]; 
       grades[i+1] = temp; 
       swapped = true; 
      } 
     } 
    } while (swapped); 
    for (var j=0; j<grades.length; j++) 
//  ^^^      ^^ 
     table.rows[j].cells[1].innerHTML = grades[j]; 
//            ^^^ 
} 

table(["tom","jerry","mickey","mouse"], [10,20,30,40], myTable); 

通知我也是固定的輸出循環並取得table一個額外的參數。

+0

我不會說謊,我沒有看到一個while while循環,直到輸出循環看起來像是一堆亂七八糟的代碼給我。 +1指出'我'問題。這可能是真正的問題。 –

+0

這裏的do-while循環沒有什麼錯 - bubblesort工作正常:-) – Bergi

+0

它的工作原理正確,是的。我只是困惑了一會兒,我還沒有看到做 - 因爲我剛剛學習JavaScript中的循環。這是一個如何/爲什麼要使用一個很好的例子。 –