Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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/1/ssh/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 Can';使用setInterval将多维数组中的数组传递给其他函数_Javascript_Multidimensional Array - Fatal编程技术网

Javascript Can';使用setInterval将多维数组中的数组传递给其他函数

Javascript Can';使用setInterval将多维数组中的数组传递给其他函数,javascript,multidimensional-array,Javascript,Multidimensional Array,我有一个名为“thisIsMyContainerArray”的多维数组,它保存其他两个数组的内容我要做的是检查“thisIsMyContainerArray”数组中的每个项目,并在控制台中分别记录该数组中的每个项目(在本例中为其他两个数组),并且每5秒进行一次到目前为止,我有以下代码: var thisIsMyContainerArray = new Array(); var thisIsMyArray1 = new Array('val1', 'val2', 'val3', 'val4');

我有一个名为“thisIsMyContainerArray”的多维数组,它保存其他两个数组的内容
我要做的是检查“thisIsMyContainerArray”数组中的每个项目,并在控制台中分别记录该数组中的每个项目(在本例中为其他两个数组),并且每5秒进行一次

到目前为止,我有以下代码:

var thisIsMyContainerArray = new Array();
var thisIsMyArray1 = new Array('val1', 'val2', 'val3', 'val4');
var thisIsMyArray2 = new Array('valA', 'valB', 'valC', 'valD');
thisIsMyContainerArray.push(thisIsMyArray1, thisIsMyArray2);
for (var i = 0; i < thisIsMyContainerArray.length; i++) {
    var t1 = setInterval(tester,5000);
    function tester() {
        console.log(thisIsMyContainerArray[i]);
    }
}
这是我想要的结果,我需要在控制台中看到它,而不是我前面提到的输出:

["val1", "val2", "val3", "val4"]
["valA", "valB", "valC", "valD"] 

任何帮助都将不胜感激,因为我已经被困在这个问题上几个小时了,我就是想不出来(我尝试将其传递给tester函数,但结果显示为“未定义”.

如果我在干净的环境中测试此代码,它的所有输出都是
未定义的
,因此这可能是因为
I
变量没有传递,也没有包含在闭包范围内。基本上,全局命名空间中的某个地方有一个
I
变量设置为0,这就是所使用的变量

另外,我不确定您是否在使用
t1
变量方面做得更多,但它在每个循环中都会被重置,因此您将得到错误的间隔


如果你只想记录日志,我会这样做:

var thisIsMyContainerArray = new Array();
var thisIsMyArray1 = new Array('val1', 'val2', 'val3', 'val4');
var thisIsMyArray2 = new Array('valA', 'valB', 'valC', 'valD');
thisIsMyContainerArray.push(thisIsMyArray1, thisIsMyArray2);
var t1 = setInterval(tester,5000);
function tester() {
    for (var i = 0; i < thisIsMyContainerArray.length; i++) {
        console.log(thisIsMyContainerArray[i]);
    }
}
var thismycontainerarray=new Array();
var thisIsMyArray1=新数组('val1','val2','val3','val4');
var thisIsMyArray2=新数组('valA','valB','valC','valD');
thisIsMyContainerArray.push(ThisIsmyArray 1,ThisIsmyArray 2);
var t1=设定间隔(测试仪,5000);
功能测试仪(){
对于(var i=0;i
如果这只是一个简化的示例,并且您需要原始结构和一个循环,并为每个数组设置多个间隔,请尝试以下操作:

var thisIsMyContainerArray = new Array();
var thisIsMyArray1 = new Array('val1', 'val2', 'val3', 'val4');
var thisIsMyArray2 = new Array('valA', 'valB', 'valC', 'valD');
thisIsMyContainerArray.push(thisIsMyArray1, thisIsMyArray2);
function tester(index) {
    console.log(thisIsMyContainerArray[index]);
    setTimeout(function() {
        tester(index);
    }, 5000);
}
for (var i = 0; i < thisIsMyContainerArray.length; i++) {
    tester(i);
}
var thismycontainerarray=new Array();
var thisIsMyArray1=新数组('val1','val2','val3','val4');
var thisIsMyArray2=新数组('valA','valB','valC','valD');
thisIsMyContainerArray.push(ThisIsmyArray 1,ThisIsmyArray 2);
功能测试仪(索引){
log(thismycontainerarray[index]);
setTimeout(函数(){
测试仪(索引);
}, 5000);
}
对于(var i=0;i
试试这个-如果现在没有,你应该可以让它工作

var thisIsMyContainerArray = new Array();
var thisIsMyArray1 = new Array('val1', 'val2', 'val3', 'val4');
var thisIsMyArray2 = new Array('valA', 'valB', 'valC', 'valD');
thisIsMyContainerArray.push(thisIsMyArray1, thisIsMyArray2);

var t1 = setInterval(tester,5000);

function tester()
{
   for (var i = 0; i < thisIsMyContainerArray.length; i++) 
   {         
        console.log(thisIsMyContainerArray[i]);          
   }    
}
var thismycontainerarray=new Array();
var thisIsMyArray1=新数组('val1','val2','val3','val4');
var thisIsMyArray2=新数组('valA','valB','valC','valD');
thisIsMyContainerArray.push(ThisIsmyArray 1,ThisIsmyArray 2);
var t1=设定间隔(测试仪,5000);
功能测试仪()
{
对于(var i=0;i
如何传递它并将其包含在闭包范围内?@Magali个人认为,我会将“tester”函数移到循环之外,在函数末尾给它一个索引参数和一个
setTimeout
,然后从循环内调用该函数。如果你的用例只不过是这个日志记录,你可以在“tester”函数。我会在您的全局命名空间中查找
I
变量。您不能将
setInterval()
更改为:
setInterval(function(){console.log(thismycontainterray[I]);
?这样可以绕过您的错误。或者传递变量“I”。
tester(I);
function tester(arrayIndex){console.log(ThismyContainerArray[arrayIndex]);}
在回复您的第一条评论时,会出现错误“未捕获引用错误:ThismyContainerArray未定义”。谢谢!如果删除第二个循环,我会得到所需的输出。:)是的,我对JS感到困惑,抱歉!更正了答案
var thisIsMyContainerArray = new Array();
var thisIsMyArray1 = new Array('val1', 'val2', 'val3', 'val4');
var thisIsMyArray2 = new Array('valA', 'valB', 'valC', 'valD');
thisIsMyContainerArray.push(thisIsMyArray1, thisIsMyArray2);

var t1 = setInterval(tester,5000);

function tester()
{
   for (var i = 0; i < thisIsMyContainerArray.length; i++) 
   {         
        console.log(thisIsMyContainerArray[i]);          
   }    
}