繁体   English   中英

javascript-遍历数组直到找到指定元素的第一次出现?

[英]javascript - iterate through array until first occurence of specified element is found?

我有一个数组["#page1", "yield", "yield", "yield", "#page2", "yield", "#page3" ]

我想自上而下地遍历数组,从最后一个yield开始,然后寻找下一个出现的非yield元素(即#page2 )。

这就是我所拥有的:

var longest = ["#page1", "yield", "yield", "yield", "#page2", "yield", "#page3" ],
    longestLen = longest.length;
for (i = longestLen-2; i>=0; i--) { 
     if ( longest[i] != "yield") {
          var gotoPage = longest[i];
          }
    }

我从i = 5(6次迭代)开始,然后检查元素是否不是yield 但是,当前方式贯穿所有6次迭代,因此我最终使用的是page#1而不是#page2 我不知道如何停止迭代。

使用return无效,还有什么其他手段? 我可以使用lastIndexOf吗?

感谢帮助!

您正在寻找break 教程关键字,该关键字会中断。

if ( longest[i] != "yield") {
    var gotoPage = longest[i];
    break; // wont iterate any further in the for(...) loop
}

到目前为止, .some()提到它,因此您也可以使用ES5 .some()

看起来像:

var longest = ["#page1", "yield", "yield", "yield", "#page2", "yield", "#page3" ],
    gotoPage;

longest.reverse().slice(1).some(function( elem ) {
    return (gotoPage = elem) !== "yield";
});

alert('goto page: ' + gotoPage);

尝试“ 休息 ”-

var longest = ["#page1", "yield", "yield", "yield", "#page2", "yield", "#page3" ],
    longestLen = longest.length;
for (i = longestLen-2; i>=0; i--) { 
     if ( longest[i] != "yield") {
          var gotoPage = longest[i];
          break;
          }
    }

看一下带有标签的“中断”操作,以便您可以在任意位置进行中断。

具有中断和继续功能的Javascript循环控制

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM