[英]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;
}
}
看一下带有标签的“中断”操作,以便您可以在任意位置进行中断。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.