如何在javascript中对数组的值进行数学运算?

时间:2011-08-21 03:39:07

标签: javascript

我有一个包含以下值的数组:

2, *, 5

如何像这样执行此字符串:

2 * 5

所以返回的结果是10?

3 个答案:

答案 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 很少有用的东西之一,但你可能不想给它任何东西。