2013-06-23 56 views
1

我想要的變量傳遞給一個函數來決定哪個數組是含有3個陣列具有以下排序多維數組:排序多維數組具有可變

wordData = [["john", "Bill", "Dan"],["Smith", "Adams", "Davidson"],[23, 45, 51]]; 

dataReader(1); 

function dataReader(sortBy){ 

    wordData.sort(sortFunc) 

    function sortFunc(a,b) { 
     a = a[sortBy]; 
     b = b[sortBy]; 
     return a == b ? 0 : (a < b ? -1 : 1) 
    } 

} 

我已經設置了一個列表框隨後與3列中的每個數組一起,變量被假設爲成對,所以John,Smith和23總是在同一行中。但我似乎無法得到排序工作在所有

+0

什麼**確實**你的意思是,「它似乎沒有工作」?它有什麼作用? – Pointy

+1

另外你的代碼實際上確實工作。你需要更清楚地解釋你的期望。 – Pointy

+0

變量「a」和「b」應該用'var'聲明。 – Pointy

回答

2

你不排序正確的數組。試試這個:

wordData = [["john", "Bill", "Dan"],["Smith", "Adams", "Davidson"],[23, 45, 51]]; 

dataReader(1); 

function dataReader(arrIndex){ 

    var arr=wordData[arrIndex]; 
    var bools=[]; 
    var tmpArr=[]; 

    arr.sort(sortFunc); 

    for(var i=0, j=wordData.length; i<j; i++) { 
     if(i!=arrIndex) { 
      tmpArr=bools.slice(0); 
      wordData[i].sort(sortArr); 
     } 
    } 

    function sortFunc(a,b) { 
     var which=(a == b) ? 0 : (a < b ? -1 : 1); 
     bools.push(which); 
     return which; 
    } 
    function sortArr(a,b) { 
     return tmpArr.shift(); 
    } 
} 

arrIndex可能更好,sortBy,如果我正確理解你。

+0

這是不正確的。 – Pointy

+0

這個「解決方案」將只對數組中的一個進行排序(「Smith」數組),並按字母順序排序。 – Pointy

+0

其實......我認爲這是有效的,但它並沒有保持變量的順序。 John應該總是在旁邊的Smith旁邊。 – user1739337