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

我们需要使用在JavaScript中使用Stacks的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]