Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';我不能在阵列上推送数据吗?_Javascript_Arrays_For Loop - Fatal编程技术网

Javascript 为什么可以';我不能在阵列上推送数据吗?

Javascript 为什么可以';我不能在阵列上推送数据吗?,javascript,arrays,for-loop,Javascript,Arrays,For Loop,你能告诉我为什么这个代码会产生错误吗? 我想创建一个多维数组 const segments=['avgekcr','efgghe','ewlskffd']; console.log(段) 设cols=[]; 让我们看一段,一封信; 对于(设i=0;i

你能告诉我为什么这个代码会产生错误吗? 我想创建一个多维数组

const segments=['avgekcr','efgghe','ewlskffd'];
console.log(段)
设cols=[];
让我们看一段,一封信;
对于(设i=0;i}
您正在使用错误的索引进行推送,已更正代码

const segments=['avgekcr','efgghe','ewlskffd'];
console.log(段)
设cols=[];
让我们看一段,一封信;
对于(设i=0;iconsole.log(cols)
值为
k
在第三次迭代后,您试图在一个实际上不存在的索引中推送一个项

改变

cols[k].push(currLetter);

const segments=['avgekcr','efgghe','ewlskffd'];
console.log(段)
设cols=[];
让我们看一段,一封信;
对于(设i=0;i控制台日志(cols)您已将空数组推送到col only变量2次。您正在尝试访问从0到7的cols[k](如果我们考虑段数组中的第一个索引)

cols[k]
不存在-使用
cols[j]

const segments=['avgekcr','efgghe','ewlskffd'];
设cols=[];
让我们看一段,一封信;
对于(设i=0;i控制台日志(cols)
cols
只包含3个空数组,在某些情况下
k
将大于2,因此
cols[k]
返回
未定义的
我不关心您的预期结果,只是指出代码中的错误。
看看你的内部for循环:

for (let k = 0; k < currSegment.length; k += 1) {
        currLetter = currSegment[k]
        cols[k].push(currLetter);

    }

使用以下方法向“cols”添加元素,因为“cols”是一维数组。只有当cols[k].push是多维数组时,才能使用它

cols.push(currSegment[k]);   // no need to define an additional variable to keep currSegment[k] value
for (let i = 0; i < segments.length; i++) {
    cols.push([]);
    cols[i] = segments[i].split('');
}
对于您的实现,您可以使用split函数将字符串转换为char数组,concat函数合并以前的cols和新的char数组

const segments = ['avgekcr', 'efgghe', 'ewlskffd'];
let cols = [];

for (let i = 0; i < segments.length; i++) {
    cols = cols.concat(segments[i].split(''));
}
const segments=['avgekcr','efgghe','ewlskffd'];
设cols=[];
for(设i=0;i
如果需要访问二维数组中的所有线段,请使用以下方法

cols.push(currSegment[k]);   // no need to define an additional variable to keep currSegment[k] value
for (let i = 0; i < segments.length; i++) {
    cols.push([]);
    cols[i] = segments[i].split('');
}
for(设i=0;i
那么,输出应该是什么?它看起来应该是
[['avgekcr',efgghe',ewlskffd'],['avgekcr',efgghe',ewlskffd'],['avgekcr',efgghe',ewlskffd']]
,是这样吗?显然
cols[k]
的值不是数组,因为该元素是
未定义的
。我假设您要做的是
cols[j].push(currentLetter)
您可能是指
cols[j]
而不是
cols[k]
sidenote:您的整个代码可以简化为
const cols=segments.map(item=>item.split(“”))谢谢!我理解我的逻辑错误。我想知道是否可以使用索引j或k。这基本上是
让cols=segments.join(“”)。split(“”)和顺便说一句。他的代码创建了一个二维数组。是@Thomus for(让i=0;i