使用堆栈的 JavaScript 前缀计算器


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

考虑以下输入数组 −

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

流程 −

  • 1 是一个操作数,推入堆栈。

  • 5 是一个操作数,推入堆栈。

  • ‘+’ 是一个运算符,弹出 1 和 5,计算它们并将其结果推入堆栈。

  • 6 是一个操作数,推入堆栈。

  • 3 是一个操作数,推入堆栈。

  • '-' 是一个运算符,弹出 6 和 3,计算它们并将其结果推入堆栈。

  • '/' 是一个运算符,弹出 6 和 3,计算它们并将其结果推入堆栈。

  • 7 是一个操作数,推入堆栈。

  • '*' 是一个运算符,弹出 2 和 7,计算它们并将其结果推入堆栈。

最后,输出应该是 −

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]

更新日期: 2020 年 11 月 23 日

超过 1 万的浏览量

启动您的 职业生涯

完成课程以取得认证

开始学习
广告