如果我有一个数学方程式的字符串,我想拆分然后计算它.我知道我可以使用eval()函数来做到这一点,但我很感兴趣,如果有另一种方法可以做到这一点 - 特别是首先拆分字符串.所以我有类似的东西
var myString = "225 + 15 - 10"
var newString = myString.split(" ");
Run Code Online (Sandbox Code Playgroud)
这会将myString变成一个数组:["225","+","15"," - ","10"];
我的下一个任务是将所有奇数编号的字符串转换为整数,我认为我可以使用parseInt(); 对于.我的问题是,如何将"+"和" - "转换为实际的算术运算符?所以最后我留下了一个我可以计算的数学表达式?
这可能吗?
jra*_*jav 74
var math_it_up = {
'+': function (x, y) { return x + y },
'-': function (x, y) { return x - y }
}???????;
math_it_up['+'](1, 2) == 3;
Run Code Online (Sandbox Code Playgroud)
Ben*_*ant 55
JavaScript的eval函数,由奥利弗·摩根的评论中提及,我只是想冲出你可以如何使用eval作为解决您的问题.
该eval函数接受一个字符串,然后返回该字符串的值作为数学运算.例如,
eval("3 + 4")
Run Code Online (Sandbox Code Playgroud)
将返回7为3 + 4 = 7.
这有助于您的情况,因为您有一个字符串数组,您希望将它们视为它们所代表的数学运算符和操作数.
myArray = ["225", "+", "15", "-", "10"];
Run Code Online (Sandbox Code Playgroud)
不将数组中的任何字符串转换为可以编写的整数或运算符
eval(myArray[0] + myArray[1] + myArray[2]);
Run Code Online (Sandbox Code Playgroud)
这将转化为
eval("225" + "+" + "15");
Run Code Online (Sandbox Code Playgroud)
这将转化为
eval("225 + 15");
Run Code Online (Sandbox Code Playgroud)
这将返回240,将值225添加到15.
或者甚至更通用:
eval(myArray.join(' '));
Run Code Online (Sandbox Code Playgroud)
这将转化为
eval("225 + 15 - 10");
Run Code Online (Sandbox Code Playgroud)
这将返回230,增加15到225和减去10的值.所以你可以看到,在你的情况下,可以跳过将数组中的字符串转换为整数和运算符,正如Oliver Morgan所说的那样eval.
| 归档时间: |
|
| 查看次数: |
51181 次 |
| 最近记录: |