我有一个基本上搜索列表的功能,看看我的目标项是否匹配。我有以下代码:
var subjectTimePoints = [5, 6, 7, 8, 9];
var selectedTimePoint = 9;
function subjectIdRequiredTimepoint() {
this.subjectTimePoints.forEach(timepoint => {
if (timepoint === this.selectedTimePoint) {
console.log('TTTTTTTTTTTTTTTTTT');
return true;
}
});
console.log('FFFFFFFFFFFFFFFF');
return false;
}
subjectIdRequiredTimepoint();
该函数仍会打印出'FFFFFFFFFFFFFFFF'并返回false,即使我先打印出'TTTTTTTTTTTTTTTTTT'。那么为什么函数在第一次返回后没有结束呢?
答案 0 :(得分:3)
这是因为return
中的forEach
未从subjectIdRequiredTimepoint
返回控件。它只从回调函数返回forEach
。
您可以使用Array#some
function subjectIdRequiredTimepoint() {
let isMatched = this.subjectTimePoints.some(timepoint => timepoint === this.selectedTimePoint);
if (isMatched) {
console.log('TTTTTTTTTTTTTTTTTT');
}
else {
console.log('FFFFFFFFFFFFFFFF');
}
return isMatched;
}