Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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,我目前一直在使用javaScript for循环 情况是这样的,在我的程序中有一个函数,它每200毫秒返回真/假值 我目前正在尝试编写的函数应该从上述函数中获取值,以便于参考,我将其命名为function1,并将其存储在数组中。 我试图使用for循环将这些值存储在一个8元素数组中。 下面是我的代码 function myFunction1(imagestatus) // { var statusArray = ["","","","","","","",""]; for (

我目前一直在使用javaScript for循环

情况是这样的,在我的程序中有一个函数,它每200毫秒返回真/假值

我目前正在尝试编写的函数应该从上述函数中获取值,以便于参考,我将其命名为function1,并将其存储在数组中。 我试图使用for循环将这些值存储在一个8元素数组中。 下面是我的代码

function myFunction1(imagestatus)  // 
{
    var statusArray = ["","","","","","","",""];

    for (var i = 0; i <= statusArray.length - 1; i++)
        {
            statusArray[i] = imagestatus;

        }
}
现在,在for循环的第一次执行期间,它将分配数组的第0个元素,true或false。在第二次执行期间,它也会这样做,这是没有好处的


我希望执行的任务是,当function1将其值返回给myFunction时,它必须将其存储在第0个元素中。然后,当它再次返回时,如果与第0个元素中的值相同,则将其存储在第1个元素中,如果不相同,则采取不同的操作。

从空数组开始:

var array[];
然后使用:

array.push(data);

将每个数据添加到数组的右端。

听起来需要做很多事情。首先,您需要一个回调函数。其次,需要将状态数组移动到全局范围

var statusArray = ["","","","","","","",""];
function myFunction1(imagestatus, callback, differentAction)  // 
{

    var i = 0;

    // if its as same as the value in 0th element, 
    while (statusArray[i]==imagestatus)
    {
        i++;
    }
    if (i<statusArray.length && i>0)
    {
        // store it in the 1st element
        statusArray[i]=imagestatus;
        if (typeof(callback)=="function")
        {
           callback();
           return;
        }
    }

    // if not same, then take a different action
    if (typeof(differentAction)=="function")
    {
        differentAction();
        return;
    }
}

我没有看到对function1的任何调用,也没有看到任何将statusArray元素与任何东西进行比较的尝试。请尝试创建一个全局变量,而不是本地变量。在这种情况下,为var I=0编写更为惯用;i<数组长度;如果你要使用for循环,我假设你的myFunction1被一个外循环调用,或者被一个以200ms速率重复的函数调用,也就是说,你的计时代码在你的myFunction1之外,所以它只起到触发器的作用。