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

如何实现支持+、-、*的顺序运算解释器并适配多维数组传参?

实现简单运算解释器并处理多维数组传参问题

需求回顾

咱们要做的是一个简单的运算解释器,规则很明确:

  • 只支持+、-、*三种运算
  • 从给定的初始值开始,严格按顺序执行每一组运算符和参数,完全不管运算优先级(直接忽略B.O.D.M.A.S规则)
  • 只要碰到不认识的命令,直接返回-1

看几个示例更清楚:

interpret(1, ["+"], [1]) → 2
interpret(4, ["-"], [2]) → 2
interpret(1, ["+", "*"], [1, 3]) → 6  // 先算1+1=2,再算2*3=6
interpret(5, ["+", "*", "-"], [4, 1, 3]) → 6  // 一步步算:5+4=9 → 9*1=9 → 9-3=6

你的问题分析

你尝试把初始值、运算符数组、参数数组打包成一个多维数组newArray = [integer, operator, intArr]来传参,但不知道怎么让这个结构配合解释器完成顺序运算。其实核心就是先把这个多维数组里的三个部分拆出来,再传给能处理运算的核心函数就行。

解决方案

1. 先写核心的解释器函数

首先咱们得有一个能处理运算逻辑的函数,它接收初始值、运算符数组、参数数组这三个参数,然后按顺序执行运算:

function interpret(initialValue, operators, operands) {
  // 先校验:运算符和参数的数量得对应上,不然没法正常运算
  if (operators.length !== operands.length) {
    console.error("运算符和参数数量不匹配哦");
    return -1;
  }

  let result = initialValue;
  // 遍历每一组运算符和参数,依次计算
  for (let i = 0; i < operators.length; i++) {
    const currentOp = operators[i];
    const currentNum = operands[i];

    switch(currentOp) {
      case "+":
        result += currentNum;
        break;
      case "-":
        result -= currentNum;
        break;
      case "*":
        result *= currentNum;
        break;
      default:
        // 碰到未知运算符,直接返回-1
        return -1;
    }
  }
  return result;
}

2. 处理多维数组传参

针对你定义的多维数组,咱们只需要用解构语法把里面的三个元素拆出来,再传给上面的interpret函数就搞定了:

let operator = ["+", "-"];
let integer = 1;
let intArr = [1, 2];
let newArray = [integer, operator, intArr];

// 从多维数组里解构出初始值、运算符数组、参数数组
const [initialVal, opsList, numsList] = newArray;
// 调用解释器函数得到结果
const finalResult = interpret(initialVal, opsList, numsList);
console.log(finalResult); // 计算过程:1+1=2 → 2-2=0,输出0

或者更简洁一点,用扩展运算符直接把多维数组的元素传给函数:

const finalResult = interpret(...newArray);

3. 边界情况测试

咱们再验证几个特殊场景,确保符合需求:

// 测试未知运算符的情况
const testUnknownOp = [2, ["/"], [1]];
console.log(interpret(...testUnknownOp)); // 输出-1

// 测试运算符和参数数量不匹配的情况
const testMismatch = [3, ["+", "-"], [5]];
console.log(interpret(...testMismatch)); // 输出-1(控制台会提示数量不匹配)

内容的提问来源于stack exchange,提问作者diagold

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:49:14