所以,在这里,我试图创建一个二维数组;数组数组。但是,每当我尝试将值推送到嵌套数组时,我都会收到标题中看到的错误。在这些for循环中,' b'数组中包含一系列字符串,这些字符串都以特定格式接收,然后代码将其分解并将其推送到二维数组中的值以便进一步工作。
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 :(得分: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);
}
}
答案 1 :(得分:0)
由于您已将数组b
声明为blank
而没有任何值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(",")));
答案 2 :(得分: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);