我有一个数组["#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
的东西吗?
感谢您的帮助!
答案 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)
使用标签查看“中断”操作,以便您可以在任何地方突破。