2012-02-27 104 views
0

我想在Javascript中創建一個嵌套數組,但無論我嘗試從這個數組中獲取某些東西,我都會得到一個'TypeError'錯誤。這裏是代碼片段:Javascript嵌套數組拋出'TypeError' - 錯誤

 var domains =new Array(); 
     var keyPair =new Array(); 
function displayStorage(){ 
    var i = 0; 
    var sKey; 
    while ((sKey = window.localStorage.key(i))) { 
     keyPair[i] = localStorage.key(i) + localStorage.getItem(sKey); 
     i++; 
    } 
    keyPair.sort(sorter()); 
    siteCount = 0; 
    valueCount = 0; 
    while(siteCount < keyPair.length/4) { 
     var offset = keyPair[siteCount].length - 1; 
     domains[siteCount] =new Array[keyPair.length]; 
     //keyPair[siteCount].substr(0,offset) keyPair[siteCount].substr(-1); 
     domains[siteCount][valueCount] = keyPair[valueCount]; 
     valueCount++; 
    if(valueCount >= 4){ 
     valueCount = 0; 
    } 
     siteCount++; 
    } 
} 
document.getElementById('testdiv').innerHTML = domains[0][1]; 

我已經嘗試了沒有if語句也是。除了交換

domains[siteCount][valueCount]

domains[siteCount,valueCount]

我也試圖與該更換而循環:

for(siteCount; siteCount <= keyPair; siteCount++){ 
    domains[siteCount] =new Array(); 
    for(valueCount;valueCount < keyPair; valueCount++){ 
     domains[siteCount][valueCount] = keyPair[siteCount]; 
    } 
} 

我明白在網絡上的閱讀什麼類型錯誤消息的裝置'當值不是預期類型時表示錯誤'。雖然我不明白爲什麼會發生在這種情況下 我只是看不出是什麼問題。

感謝您的任何幫助, Wez。

+0

我試圖把你的代碼放到一個的jsfiddle及其給各種錯誤,1它的炸彈,當您嘗試訪問window.localStorage.key(i)和I>比項目存儲,我很快把try/catch輪進一步測試,theres沒有分揀機功能,所以評論了排序然後我門新的數組[keyPair.length]不是一個構造函數,你可以把一個JSFiddle放在一起,以顯示錯誤你有 – Dampsquid 2012-02-27 20:21:51

回答

0

這裏:

keyPair.sort(sorter()); 

你應該傳遞函數,而不是評估功能。像這樣:

keyPair.sort(sorter);