如果我有一个数学方程式的字符串,我想将其拆分然后进行计算。我知道我可以使用eval()函数来做到这一点,但我很感兴趣,如果有另一种方法可以做到这一点 - 特别是首先拆分字符串。所以我有类似
的东西var myString = "225 + 15 - 10"
var newString = myString.split(" ");
这会将myString变成一个数组:[“225”,“+”,“15”,“ - ”,“10”];
我的下一个任务是将所有奇数编号的字符串转换为整数,我认为我可以使用parseInt();对于。我的问题是,如何将“+”和“ - ”转换为实际的算术运算符?所以最后我留下了一个我可以计算的数学表达式?
这可能吗?
答案 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
。