如何实现数组所有元素status均为3时才执行指定函数的条件判断
问题原因
你原来的代码逻辑错误点在于:
- forEach会遍历每一个数组元素,只要遍历到status为3的元素就会执行目标函数,没有提前做全局校验的步骤,所以当数组同时存在status为3和非3的元素时,会出现既打印错误日志又错误执行目标函数的问题,完全不符合「所有元素status都为3才执行」的要求。
解决方案
使用JavaScript数组内置的every()方法,该方法会测试数组中所有元素是否都能通过指定测试函数,返回布尔值,刚好匹配你的需求,修改后代码如下:
goToPeople(): void { const selectedItems = this.ms.selectedItems; // 校验所有元素的status都等于3 const allStatusIs3 = selectedItems.every(item => item.status === 3); if (allStatusIs3) { console.log('yesss'); // 在这里放置你的目标函数 } else { console.log('nonnnnnn'); } }
逻辑说明
- 只要数组存在任意一个
status !== 3的元素,every()就会直接终止遍历返回false,相比全量遍历性能更高 - 只有所有元素的status都等于3时,才会进入执行目标函数的分支
- 如果需要兼容空数组场景(比如selectedItems为空时不执行目标函数),可以额外增加长度判断:
const allStatusIs3 = selectedItems.length > 0 && selectedItems.every(item => item.status === 3)
内容的提问来源于stack exchange,提问作者lona bin
相关产品推荐
相关产品推荐

