JavaScript函数改造:提取参数数字相乘,无数字返回指定文本
改造
specialMix函数实现数字相乘逻辑 原specialMix函数原本实现参数数字求和功能,现需改造为满足以下需求的版本:
- 接收任意数量参数,忽略不含有效数字的字符串内容
- 仅提取所有参数中的有效数字进行相乘运算
- 若所有参数均不含有效数字,返回
"All Is String" - 修复原函数处理全字符串参数时无法正确返回指定内容的问题
改造后的代码实现
function specialMix(...data) { let result = 1; let hasValidNumber = false; for (const item of data) { const num = parseInt(item); // 校验提取到的是否为有效整数(排除NaN情况) if (!Number.isNaN(num)) { result *= num; hasValidNumber = true; } } return hasValidNumber ? result : "All Is String"; } // 测试用例验证 console.log(specialMix(10, 20, 30)); // 输出 600 console.log(specialMix("10Test", "Testing", "20Cool")); // 输出 200 console.log(specialMix("Testing", "10Testing", "40Cool")); // 输出 400 console.log(specialMix("Test", "Cool", "Test")); // 输出 "All Is String"
关键改动说明
- 初始化
result为1:乘法的单位元是1,若初始值设为0会导致所有乘积结果为0,不符合需求 - 新增
hasValidNumber标记:用于追踪是否提取到有效数字,避免全字符串场景下错误返回1 - 遍历逻辑优化:使用
for...of简化遍历,每次提取数字后通过!Number.isNaN(num)判断有效性,有效则执行相乘操作并标记状态 - 最终返回逻辑:根据标记判断结果,存在有效数字则返回乘积,否则返回指定字符串
内容的提问来源于stack exchange,提问作者Abdo Adel
相关产品推荐
相关产品推荐

