如何实现适配动态整数数组与操作符的JavaScript数学运算脚本
优化JavaScript连续运算脚本方案
需求说明
给定整数数组(如 [10,4,8,5,9,5])和操作符字符串(如 "*+-++"),按顺序执行连续数学运算:
- 运算逻辑:
10*4 → 40+8 → 48-5 → 43+9 → 51+5 - 要求:数组和操作符可动态修改,代码无需调整即可正常运行,最终将结果打印到控制台。
原代码存在的问题
原代码有多处逻辑错误,无法实现需求:
- 初始值错误:
result初始设为0,正确初始值应为数组第一个元素(运算从第一个元素与第二个元素结合操作符开始) - 条件判断重复:
else if仍判断"+",应为判断"-" - 循环范围错误:操作符数量应为数组长度减1(n个元素需n-1个操作符),原循环遍历数组长度会导致操作符索引越界
- 功能缺失:未处理乘、除运算
优化后的代码
// 可动态修改的输入参数 const numbers = [10, 4, 8, 5, 9, 5]; const operators = "*+-++"; // 输入合法性校验 if (numbers.length < 1) { console.error("整数数组不能为空"); } else if (operators.length !== numbers.length - 1) { console.error(`操作符数量应为${numbers.length - 1}个,当前为${operators.length}个`); } else { let result = numbers[0]; // 遍历操作符执行运算 for (let i = 0; i < operators.length; i++) { const op = operators[i]; const nextNum = numbers[i + 1]; switch(op) { case "+": result += nextNum; break; case "-": result -= nextNum; break; case "*": result *= nextNum; break; case "/": // 处理除数为0的情况 if (nextNum === 0) { console.error("除数不能为0"); result = NaN; break; } result /= nextNum; break; default: console.error(`不支持的操作符:${op}`); result = NaN; break; } // 若出现错误,终止循环 if (isNaN(result)) break; } // 打印最终结果 console.log("运算结果:", result); }
代码说明
- 动态参数:
numbers和operators可直接修改,无需调整代码其他部分 - 合法性校验:提前检查数组和操作符的格式,避免运行时错误
- 完整运算支持:实现加减乘除四种基础运算,包含除数为0的异常处理
- 终止逻辑:遇到不支持的操作符或运算错误时,终止循环并提示错误
测试示例
将 numbers 设为 [10,4,8,5,9,5],operators 设为 "*+-++",运行后控制台输出:运算结果: 56
内容的提问来源于stack exchange,提问作者Lorenzo Donadio
相关产品推荐
相关产品推荐

