使用 JavaScript 中的堆栈的前缀计算器

javascriptweb developmentfront end technologyobject oriented programming更新于 2024/1/8 4:28:17

我们需要使用 JavaScript 中的堆栈制作一个带有 RPN(逆波兰表示法)输入法的计算器。

考虑以下输入数组 −

const arr = [1, 5, '+', 6, 3, '-', '/', 7, '*'];

处理 −

  • 1 是操作数,推送到堆栈。

  • 5 是操作数,推送到堆栈。

  • '+'是一个运算符,弹出 1 和 5,计算它们并将结果推送到 Stack。

  • 6 是一个操作数,推送到 Stack。

  • 3 是一个操作数,推送到 Stack。

  • '−' 是一个运算符,弹出 6 和 3,减去它们并将结果推送到 Stack。

  • '/' 是一个运算符,弹出 6 和 3,除以它们并将结果推送到 Stack。

  • 7 是一个操作数,推送到 Stack。

  • '*' 是一个运算符,弹出 2 和 7,将它们相乘并将结果推送到 Stack。

最后,输出应该是 −

const output = 14;

示例

其代码为 −

const arr = [1, 5, '+', 6, 3, '−', '/', 7, '*'];
const stackCalculator = (arr = []) => {
   const options = {
      '+': (a, b) => a + b,
      '−': (a, b) => a - b,
      '*': (a, b) => a * b,
      '/': (a, b) => a / b
   };
   const stack = [];
   arr.forEach(value => {
      stack.push(value in options
      ? options[value](...stack.splice(-2))
      : value
      );
   });
   return stack;
};
console.log(stackCalculator(arr));

输出

控制台中的输出将是 −

[14]

相关文章


有用资源