JavaScript filter真值判断逻辑及循环匹配到任一真值即返回true的实现方法
你当前的代码存在逻辑缺陷:for 循环会在第一次迭代时直接返回首个元素的判断结果,不会继续遍历后续数组项,完全无法实现「只要有一个元素满足条件就返回true」的需求。
解决方案1:手动调整for循环逻辑
你可以新增一个标记变量记录是否有匹配项,找到匹配项后提前终止循环,最后返回标记结果:
const addCart = () => { let hasMatched = false; for (let i = 0; i < props.cart.length; i++) { if (props.cart[i].domainName === props.domainName) { hasMatched = true; break; // 找到匹配项后直接终止遍历,减少不必要的性能消耗 } } return hasMatched; };
解决方案2:使用原生数组方法简化实现
JavaScript 数组内置的some()方法本身就是用来检测「数组中是否存在至少一个符合指定条件的元素」,完全匹配你的需求,代码更简洁易读,性能和手动写for循环一致:
const addCart = () => { return props.cart.some(item => item.domainName === props.domainName); };
some()方法会在找到第一个符合条件的元素时立即停止遍历返回true,所有元素都不符合条件时才会返回false。
内容的提问来源于stack exchange,提问作者luka tchubabrial
相关产品推荐
相关产品推荐

