0

在javascript中使用for循环我得到了未知数量的id,它们不在数组中,而是一个接一个地出现。

当没有更多的 id 来检索意味着 for 循环已完成时,有没有办法获得警报?

我无法解决这个问题,任何帮助将不胜感激。

谢谢!

用代码编辑以进行澄清。

    function iterateDevices(api) {

        var count = api.getcount("devices");     var apiPath = dequotePath(api);

            for (var i = 0; i < count; i++) {

            var deviceApi = new LiveAPI(apiPath + " devices " + i); if (deviceApi) {
            var deviceName = deviceApi.get("name"); var deviceid = deviceApi.id; //var
            deviceName = deviceApi.get("parameters"); var className =
            deviceApi.get("class_name"); var deviceApiPath = dequotePath(deviceApi);
            var chainsCount; var chainApi; var j;

                if ((className == "DrumGroupDevice") || (className ==
                "AudioEffectGroupDevice") || (className == "InstrumentGroupDevice")){
                //post(deviceName + " id " + deviceid + "\'\n"); //outlet(0,deviceid);
                //  arr.push(deviceName);

                    if (deviceApi.get("can_have_chains") == 1) { chainsCount =
                    deviceApi.getcount("chains"); // only racks have chains for (j = 0; j
                    < chainsCount; j++) { //    post("id" + deviceid + " found device " +
                    deviceName + " at path \'" + deviceApiPath + "\'\n");
                    //outlet(0,deviceid); chainApi = new LiveAPI(deviceApiPath + " chains
                    " + j); iterateDevices(chainApi);

                        myFunction(); } chainsCount = deviceApi.getcount("return_chains");
                        // only racks have chains for (j = 0; j < chainsCount; j++) {
                        //post("2 found device " + deviceName + "id"+deviceid + " at path
                        \'" + deviceApiPath + "\'\n"); //   outlet(0,deviceid); chainApi = new
                        LiveAPI(deviceApiPath + " return_chains " + j);
                        iterateDevices(chainApi);

                }
            }
            }
        }
    }

} iterateDevices.local = 1;
4

2 回答 2

0

for 循环的目的是处理已知数量的迭代。如果要处理未知次数的迭代,可以使用 while 循环。

当然,这是编程,所以让我们看看我们可以做的疯狂的事情:

  1. 迭代一个集合。我们不一定知道集合中有多少东西,但我们可能想遍历所有东西。集合中的事物数量甚至可能在我们迭代时发生变化。
  2. 我们可以改变循环遍历的方式。整个 i++ 部分?如果我们用 i += 2 替换它呢?或者如果它是 i -=1 怎么办?或者 i += j 和 j 在我们迭代时发生变化?
  3. 我们可以改变跳出循环的方式。您可以在其中放置一个 break 语句以随时跳出循环。您还可以更改循环的条件。如果 i < 100 被 i<j 替换怎么办?或者如果我们将其替换为 i<100 || q == 对吗?
于 2020-12-13T13:57:37.940 回答
0

您可以使用 while 循环代替 for 并插入条件来终止循环。

使用伪代码,您可以执行以下操作:

other_ids = True // boolean var
while(other_ids) {
    // do what you have to do
    other_ids = FuncionToCheckWhetherThereAreNewIds
}

FuncionToCheckWhetherThereAreNewIds应该是一个函数,如果有新的 id,则为 true,如果没有,则为 false。

于 2020-12-13T13:59:53.387 回答