如何获取forEach循环的布尔结果?判断内部find全返回true
解决方法
首先,forEach方法本身没有返回值(始终返回undefined),所以你直接把它的返回值赋值给变量肯定得不到想要的结果。
你的核心需求是判断数组中所有元素都满足指定条件(即每个元素都是'apple'),JavaScript数组提供了专门的every()方法来实现这个逻辑:它会遍历数组,只要有一个元素不满足条件就立即返回false,只有当所有元素都满足条件时才返回true,完全匹配你的场景需求。
正确代码示例
const isAllTruthy = items.every(item => item === 'apple');
场景验证
- 当
items = ['apple','orange','banana']时,every遍历到第二个元素'orange'时发现不满足条件,直接返回false,符合你的期望。 - 当
items = ['apple','apple','apple']时,所有元素都满足条件,返回true,符合你的期望。
如果你一定要用forEach实现(不推荐)
虽然every()是最优解,但如果非要用forEach,可以通过外部变量来记录结果:
let isAllTruthy = true; items.forEach(item => { // 只要有一个元素不满足,就把结果设为false if (item !== 'apple') { isAllTruthy = false; } });
注意这种方式效率不如every(),因为every()会在遇到第一个不满足条件的元素时停止遍历,而forEach会遍历完所有元素。
内容的提问来源于stack exchange,提问作者BitByte
相关产品推荐
相关产品推荐

