如何将字符串转换为JavaScript中的数学运算符

How can I convert a string into a math operator in javascript

本问题已经有最佳答案,请猛点这里访问。

如果我有一个数学方程式的字符串,我想将其拆分然后计算。 我知道我可以使用eval()函数来执行此操作,但是我对是否有另一种方法可以做到这一点感兴趣-特别是首先拆分字符串。 所以我有类似的东西

1
2
var myString ="225 + 15 - 10"
var newString = myString.split("");

这会将myString转换为数组:[" 225"," +"," 15","-"," 10"];

我的下一个任务是将所有奇数字符串转换为整数,我认为我可以使用parseInt();。 对于。 我的问题是,如何将" +"和"-"转换为实际的算术运算符? 这样最后我剩下的是可以计算的数学表达式?

这可能吗?


1
2
3
4
5
6
var math_it_up = {
    '+': function (x, y) { return x + y },
    '-': function (x, y) { return x - y }
}???????;

math_it_up['+'](1, 2) == 3;


Oliver Morgan在评论中提到了JavaScript的eval函数,而我只是想冲洗掉如何使用eval作为解决问题的方法。

eval函数采用一个字符串,然后返回被视为数学运算的该字符串的值。例如,

1
eval("3 + 4")

将返回7作为3 + 4 = 7。

这对您有帮助,因为您有希望将其视为代表的数学运算符和操作数的字符串数组。

1
myArray = ["225","+","15","-","10"];

无需将数组中的任何字符串转换为整数或运算符,就可以编写

1
eval(myArray[0] + myArray[1] + myArray[2]);

这将转化为

1
eval("225" +"+" +"15");

这将转化为

1
eval("225 + 15");

它将返回240,即225加15的值。

或更通用的:

1
eval(myArray.join(' '));

这将转化为

1
eval("225 + 15 - 10");

它将返回230,即为225加15并减去10的值。因此,您可以看到,在这种情况下,可以跳过将数组中的字符串转换为整数和运算符的过程,并且如Oliver Morgan所说,仅它。


考虑将isNaN(Number(array[x]))switch用于不满足条件的任何内容。