Javascript Can';使用setInterval将多维数组中的数组传递给其他函数
我有一个名为“thisIsMyContainerArray”的多维数组,它保存其他两个数组的内容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”数组中的每个项目,并在控制台中分别记录该数组中的每个项目(在本例中为其他两个数组),并且每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]);
}
}