如何从输入字段中接受一个公式来计算一个值?例如 "(a+b)/100"
, "(a*b)/300"
"(b/a)"
,等等。
结果应该是计算值。所以,给定 A = 100; B = 200;
而公式为 "(a+b)"
,结果应该是 300
.
你可以使用 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'
}))
我建议使用一个现有的库来解析& 评估方程。有相当多的库可以在 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/[email protected]/dist/bundle.min.js"></script>
不仅仅是比普通人更强大 eval
-基于的方法,但与javascript相比,它也使用了更多面向数学的语法。