我有一个名为“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]);
}
}
我总是每隔5秒在我的控制台中获得以下输出:
["val1", "val2", "val3", "val4"]
["val1", "val2", "val3", "val4"]
这是我想要的结果,我需要在控制台中看到这个,而不是我之前提到的输出:
["val1", "val2", "val3", "val4"]
["valA", "valB", "valC", "valD"]
任何帮助都会受到高度赞赏,因为我已经被困在这几个小时了,我只是想不出来。 :(我尝试将它传递给测试器功能,但结果却是“未定义”。
答案 0 :(得分:1)
如果我在干净的环境中测试此代码,它的所有输出都是undefined
,因此可能是因为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 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);
}
答案 1 :(得分:1)
试试这个 - 如果现在不是这样的话你应该能够正常工作..
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]);
}
}