javascript - 在javascript中使用什么数据结构或迭代方法来获得循环列表行为

标签 javascript loops data-structures

假设我有一个集合 [1,2,3,4] 我想从第一个元素迭代到最后一个元素,然后返回到第一个元素。所以它应该是 1,2,3,4,1,2,3,4,1,2.... 直到某件事为真。

目前我在想

while(IsSomethingTrue)
{
    for(var i=0;i<Myarr.length;i++)
    {
       //do-something
       if(i==(Myarr.length-1)) 
       {
            i=0; //setting it back to first index
       }
    }
}

我知道这是一个基本问题,上面是我可以实现目标的一种方法,但想知道是否有更好的方法,比如沿着循环列表的数据结构或 javascript 中的任何循环方法可以继续迭代直到数组的末尾,重新从头开始。

对于那些我需要这个的人来说:我正在尝试用 Javascript 可视化用餐哲学家并且需要这种行为发生。

最佳答案

虽然性能会降低,但如果您只是想要更短的代码,并且您不介意改变数组,您可以这样做:

while(IsSomethingTrue)
{
    var item = Myarr[0];
    // do something with item
    Myarr.push(Myarr.shift());
}

再次明确一点,肯定会对性能产生一些影响。只是想我会展示它的可能性。

如果您不想改变原始数组,您也可以在进入 while 循环之前使用 .slice() 浅克隆数组。

关于javascript - 在javascript中使用什么数据结构或迭代方法来获得循环列表行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16498033/

相关文章:

javascript - IE 8 数组迭代

javascript - Jquery 不更新值/变量

data-structures - 通过索引快速插入/删除元素的最佳数据结构(容器)是什么?

javascript - 使用 jQuery 将一个 div 移动到另一个 div

javascript - 如何在 C# 中的 Jint 中找到我的 javascript 函数?

javascript - For 循环没有按预期工作,我做错了什么?

c - 不合逻辑的基准测试?

arrays - 循环遍历指定的列和行

java - 关联数组的实现

c++ - 合并排序无法在流程结束时合并零件