You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现适配动态整数数组与操作符的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:55:30