如何在javascript中将字符串转换为数学运算符

时间:2012-10-25 21:56:16

标签: javascript

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

的东西
var myString = "225 + 15 - 10"
var newString = myString.split(" ");

这会将myString变成一个数组:[“225”,“+”,“15”,“ - ”,“10”];

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

这可能吗?

3 个答案:

答案 0 :(得分:68)

var math_it_up = {
    '+': function (x, y) { return x + y },
    '-': function (x, y) { return x - y }
}​​​​​​​;

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

答案 1 :(得分:54)

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

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

eval("3 + 4")

将返回7为3 + 4 = 7.

这有助于您的情况,因为您有一个字符串数组,您希望将它们视为它们所代表的数学运算符和操作数。

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

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

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

将转换为

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

将转换为

eval("225 + 15");

将返回240,将值225添加到15。

甚至更通用:

eval(myArray.join(' '));

将转换为

eval("225 + 15 - 10");

将返回230,增加15到225并减去10的值。所以你可以看到,在你的情况下,可以跳过将数组中的字符串转换为整数和运算符,正如Oliver Morgan所说,只是eval它。

答案 2 :(得分:0)

对于任何不满足条件的内容,请考虑使用isNaN(Number(array[x]))switch