2016-05-25 57 views
0

所以,在這裏,我試圖創建一個二維數組;一組數組。但是,每當我嘗試將值推入嵌套數組時,我都會收到標題中顯示的錯誤。在這些for循環中,'b'數組充滿了所有以特定格式接收的字符串列表,然後代碼將其分解並將其推送到2-D數組中的值以供進一步工作。TypeError:無法讀取二維數組中未定義的屬性'push'

var c = [] 

for(var u = 0; u < b.length; u++){ 
    c[u] = new Array(0); 
    for(var y = 0; y < b[u].length; y++){ 
    c[u][y].push(b[u].substring(b[u].indexOf('\"'), b[u].indexOf(","))); 
    b[u] = b[u].substring(b[u].indexOf(',') + 1); 
    } 
} 

我已經看過其他的解決方案在這裏上stackoverflow;要麼我無法把頭圍住他們,要麼他們在這裏不適用。我無法分辨這裏有什麼問題。請幫助。

+0

那麼,當過程開始時,'b.length'爲零;在開始時,數組中還沒有任何東西,所以外循環將不會執行迭代。 – Pointy

+0

b已經包含字符串,由另一個循環填充。我會澄清,對不起。 –

+0

你想做什麼?我幾乎可以肯定,有一種比嵌套for循環和有狀態調用'.push()'更好的方法。 –

回答

2
var c = [] 

for(var u = 0; u < b.length; u++){ 
    c[u] = new Array(0); 
    for(var y = 0; y < b[u].length; y++){ 
    // NOT WORKING 
    // c[u][y].push(b[u].substring(b[u].indexOf('\"'), b[u].indexOf(","))); 

    // WORKING 
    c[u].push(b[u].substring(b[u].indexOf('\"'), b[u].indexOf(","))); 

    // WORKING 
    c[u][y] = b[u].substring(b[u].indexOf('\"'), b[u].indexOf(",")); 

    b[u] = b[u].substring(b[u].indexOf(',') + 1); 
    } 
} 
+0

是的,這是有效的,謝謝你的幫助。 –

+0

很高興知道它有幫助。 – zpul

0

你爲什麼打電話給c[u][y].push?您將c[u]設置爲新陣列,但c[u][y]從不分配。

+0

是的,這是問題所在,我花了好一個小時的時間試圖找出它在哪裏borking;我只是錯過了小錯字。謝謝! –

0

正如您已經聲明數組bblank沒有任何值var b = []。因此,b.length將是0

然後這個條件for(var u = 0; u < b.length; u++)將不會執行和代碼將無法正常工作。

更新:

所以,你可以直接使用:

c[u].push(b[u].substring(b[u].indexOf('\"'), b[u].indexOf(","))); 
+0

b包含字符串。早些時候,var b = []只被用作這個問題的佔位符,對於混淆的道歉 –

0

我覺得這裏的問題是,您要的東西,已經是一個值使用.push

/** 
* c is an array: [] 
*/ 
var c = [] 

for (var u = 0; u < b.length; u++) { 
    /** 
    * c[u] is a subarray: [u: []] 
    */ 
    c[u] = new Array(0); 
    for (var y = 0; y < b[u].length; y++) { 
    /** 
    * c[u][y] is a value, currently undefined: [u: [y: ??]] 
    */ 
    c[u][y].push(b[u].substring(b[u].indexOf('\"'), b[u].indexOf(","))); 
    b[u] = b[u].substring(b[u].indexOf(',') + 1); 
    } 
} 

對於你想要的,喲你可以使用以下兩種方法之一:

// Value (replace as needed) 
var value = b[u].substring(b[u].indexOf('\"'), b[u].indexOf(",")); 

// Option 1 
c[u][y] = value; 

// Option 2 
c[u].push(value); 
相關問題