我正在使用此代码检查某些内容是否有效
function isValid(source, target) {
arr.forEach(function (el) {
if (el.value === 3) {
return false;
}
});
return true;
}
问题是return false
代码行只会终止forEach
中的内部函数,而不是整个isValid
函数。
如何终止外部功能?
答案 0 :(得分:2)
使用Array#every
检查元素
function isValid(source, target) {
return arr.every(function (el) {
return el.value !== 3;
});
}
相同
function isValid(source, target) {
return !arr.some(function (el) {
return el.value === 3;
});
}
答案 1 :(得分:1)
你不能。
请参阅the documentation from MDN:
除了抛出异常之外,没有办法停止或中断forEach()循环。如果你需要这样的行为,forEach()方法是错误的工具,而是使用普通循环。如果要测试谓词的数组元素并需要布尔返回值,则可以使用every()或some()。如果可用,新方法find()或findIndex()也可用于在真正的谓词上提前终止。
答案 2 :(得分:0)
使用常规for in
会很好,但使用forEach
可以做到:
function isValid(source, target) {
var r = true;
arr.forEach(function (el) {
if (el.value === 3) {
r = false;
return false; // terminate loop
}
});
return r;
}