Javascript 在Array.forEach中为函数而不是内部函数返回值
我使用此代码检查某些内容是否有效Javascript 在Array.forEach中为函数而不是内部函数返回值,javascript,arrays,foreach,return,Javascript,Arrays,Foreach,Return,我使用此代码检查某些内容是否有效 function isValid(source, target) { arr.forEach(function (el) { if (el.value === 3) { return false; } }); return true; } 问题是代码的返回false行只会终止forEach中的内部函数,而不是整个isValid函数 如何终止外部函数?您不能 见: 除了抛出异常之外,没有其他方法可以停止或中断forEac
function isValid(source, target) {
arr.forEach(function (el) {
if (el.value === 3) {
return false;
}
});
return true;
}
问题是代码的返回false
行只会终止forEach
中的内部函数,而不是整个isValid
函数
如何终止外部函数?您不能
见:
除了抛出异常之外,没有其他方法可以停止或中断forEach()循环。如果需要这样的行为,forEach()方法是错误的工具,请使用普通循环。如果您正在测试数组元素的谓词,并且需要一个布尔返回值,那么可以使用each()或some()。如果可用,新方法find()或findIndex()也可以用于在true谓词上提前终止
在中使用常规的
会很好,但是使用forEach
可以:
function isValid(source, target) {
var r = true;
arr.forEach(function (el) {
if (el.value === 3) {
r = false;
return false; // terminate loop
}
});
return r;
}
用于检查元素
function isValid(source, target) {
return arr.every(function (el) {
return el.value !== 3;
});
}
同
使用“普通”for循环不是更容易吗?使用or。
function isValid(source, target) {
return !arr.some(function (el) {
return el.value === 3;
});
}