我现在正在处理一个个人项目(我正在尝试使用 JavaScript 中给定的表达式绘制图表),但我遇到了一个问题。
假设s = "3x^2+4x+5"
,我正在尝试将其转换为return 3*x*x + 4*x + 5
,在函数中
myGraph.drawEquation(function(x) {
return 3*x*x + 4*x + 5;
}, 'green', 3);
我环顾四周,发现了 eval()
,但它需要将一个值替换为 x
。其他指南说我需要制作自己的解析器,但是如何创建一个执行上述操作的解析器?
目前我有一个函数可以将 s = "3x^2+4x+5"
转换为 ["+3x^2","+4x","+5"]
到 ["+3*x*x","+4*x","+5"]
,如果有帮助的话。
(抱歉多次编辑)
最佳答案
您可以使用 math.js 的表达式解析器为此,它支持定义函数:
var f = math.eval('f(x) = 3x^2+4x+5');
console.log(f(1)); // outputs 12
console.log(f(2)); // outputs 25
console.log(f(3)); // outputs 44
math.js 有自己的表达式解析器,它不使用 JavaScript 的 eval
函数。
关于javascript - 如何将变量表达式转换为可执行代码(而不是替换其中的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28620667/