【问题标题】:How to use a formula (in string format) to calculate values如何使用公式(字符串格式)来计算值
【发布时间】:2020-09-27 07:31:17
【问题描述】:

如何接受输入字段中的公式来计算值? 比如"(a+b)/100""(a*b)/300""(b/a)"

结果应该是计算值。所以,给定A = 100; B = 200;,公式是"(a+b)",结果应该是300

【问题讨论】:

标签: javascript calculator calc


【解决方案1】:

你可以使用eval,其实不推荐。在函数内创建一个对象,其中操作符名称是键,符号是值,例如 +*。在调用函数时,传递一个具有两个值和运算符的对象。

function doCalculation({
  val1,
  val2,
  operation
}) {
  const obj = {
    add: '+',
    multiply: '*'
  }
  return parseInt(eval(`${val1}${obj[operation]}${val2}`), 10) / 100
}

console.log(doCalculation({
  val1: 100,
  val2: 200,
  operation: 'add'
}))

【讨论】:

    【解决方案2】:

    我建议使用现有的库之一来解析和评估方程。
    npm 上有很多可用的。

    例如expr-eval

    const parser = new exprEval.Parser();
    const expr = parser.parse("(a+b)/100");
    console.log(expr.evaluate({ a: 100, b: 200 })); // 3
    console.log(expr.evaluate({ a: 200, b: 200 })); // 4
    <script src="https://unpkg.com/expr-eval@1.2.2/dist/bundle.min.js"></script>

    这不仅比基于 eval 的方法更健壮,而且与 javascript 相比,它还使用了更面向数学的语法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      相关资源
      最近更新 更多