JavaScript中检测数组含字符串值时返回false的实现方法
问题说明
现有用于计算数组中正数之和的JavaScript函数,需要新增判断逻辑:当数组中存在字符串类型的元素时,函数直接返回false。
原有代码如下:
function SummPositive( numbers ) { var negatives = []; var sum = 0; for(var i = 0; i < numbers.length; i++) { if(numbers[i] < 0) { negatives.push(numbers[i]); }else{ sum += numbers[i]; } } console.log(negatives); return sum; } var sum_result = SummPositive( [ 1, 2, 3, 4, 5, -2, 23, -1, -13, 10,-52 ] ); console.log(sum_result);
修复方案
在遍历数组的流程最前端新增类型判断逻辑,一旦检测到字符串类型元素直接终止函数返回false即可,修复后完整代码如下:
function SummPositive( numbers ) { var negatives = []; var sum = 0; for(var i = 0; i < numbers.length; i++) { // 新增字符串类型校验 if (typeof numbers[i] === 'string') { return false; } if(numbers[i] < 0) { negatives.push(numbers[i]); }else{ sum += numbers[i]; } } console.log(negatives); return sum; } // 纯数值数组测试 var sum_result = SummPositive( [ 1, 2, 3, 4, 5, -2, 23, -1, -13, 10,-52 ] ); console.log(sum_result); // 输出计算结果48 // 含字符串元素的数组测试 var invalid_result = SummPositive( [1, 2, 'test', 4]); console.log(invalid_result); // 输出false
改动说明
- 用
typeof运算符做类型检测,命中字符串类型时直接返回false,终止后续计算逻辑 - 原有收集负数、计算正数之和的逻辑完全保留,不影响原有功能
- 类型判断放在循环最前端,遇到非法值不需要执行后续计算,执行效率更高
内容的提问来源于stack exchange,提问作者abibinyun
相关产品推荐
相关产品推荐

