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

时间:2011-10-24 14:01:54

标签: javascript jquery arrays loops

我有一个数组["#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的东西吗?

感谢您的帮助!

4 个答案:

答案 0 :(得分:4)

您正在寻找break tutorial 关键字,该关键字会突破循环。

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

答案 1 :(得分:3)

因为到目前为止没有人提到它,你也可以使用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);

答案 2 :(得分:0)

尝试'break' -

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;
          }
    }

答案 3 :(得分:0)

使用标签查看“中断”操作,以便您可以在任何地方突破。

Javascript Loop Control with Break and Continue