2016-05-25 22 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); 
相关问题