我有一个包含以下值的数组:
2, *, 5
如何像这样执行此字符串:
2 * 5
所以返回的结果是10?
答案 0 :(得分:1)
假设您可以使用顺序和括号来处理自己的优先级,并且您可以使用eval
,然后使用eval
:
var str = "2,*,5";
var exp = str.split(",").join("");
var n = eval(exp);
alert(n);
此外,假设您的初始字符串中没有空格。
答案 1 :(得分:1)
最可怕的不安全方式是做这样的事情:
eval([2,"*",5].join(''))
但我永远不会像往常一样推荐这样做。 “正确”的方法是编写某种解析器。
var ops = [2,"*",5]
var val = ops.shift();
while(ops.length > 0) {
var item = ops.shift();
switch(item) {
case "*": val *= ops.shift();
case "+": val += ops.shift();
case "-": val -= ops.shift();
case "/": val /= ops.shift();
}
}
这基本上就像一个非常简单的计算器...但我仍然不能真正推荐这种方法。
你准备做什么?也许有一种更好的方法来模拟除了数组之外你想做什么?
答案 2 :(得分:0)
你可以这样做:
var array = [2, '*', 5];
eval(array.join(''));
这是 eval 很少有用的东西之一,但你可能不想给它任何东西。